PyQt:最有效的删除sql查询

2024-05-15 03:25:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是pyqt4、qt设计器和postgresql数据库。我已经成功地制作了一部分GUI,它将新数据插入到我的数据库中,但是现在我想尝试其他方法来删除GUI部分。由于我对python/pyqt已经有一个星期了,所以我将尽可能简单地解释一下我要找的东西。首先:这是我用来添加数据的部分代码:

...
class database_GUI(QtGui.QWidget, Ui_Main_GUI_Widget):
       def __init__(self):
              QtGui.QWidget.__init__(self)
              self.setupUi(self)
              self.Add_button.clicked.connect(self.open_sub_ui)

       def open_sub_ui(self):
              if self.Add_comboBox.currentText() == "kirurg":
                     global kirurg
                     kirurg = kirurg_GUI()
                     kirurg.show()
...
class kirurg_GUI(QtGui.QWidget, Ui_kirurg_Widget):
       def __init__(self):
              QtGui.QWidget.__init__(self)
              self.setupUi(self)
              self.kirurg_Add_button.clicked.connect(self.insert_kirurg)

       def insert_kirurg(self):
              oib_kir = self.kirurg_oib_kir_lineEdit.text()
              if not oib_kir:
                     QtGui.QMessageBox.critical(self, 'Query error', 'oib_kir must not be empty')

              else: 
                     query = QSqlQuery()
                     status = query.exec("INSERT INTO kirurg (oib_kir, prezime, ime, adresa, broj_telefona)"
                                         "VALUES ('%s', '%s', '%s', '%s', '%s')" % (''.join(self.kirurg_oib_kir_lineEdit.text()),
                                                                                    ''.join(self.kirurg_prezime_lineEdit.text()),
                                                                                    ''.join(self.kirurg_ime_lineEdit.text()),
                                                                                    ''.join(self.kirurg_adresa_lineEdit.text()),
                                                                                    ''.join(self.kirurg_broj_telefona_lineEdit.text())))
                     if status is not True:
                            errorText = query.lastError().text()
                            QtGui.QMessageBox.critical(self, 'Query error', errorText)

所以基本上,新的GUI会为其他组合框选项打开。如果用户选择组合框选项1并单击“添加”,则将打开GUI以将数据添加到表1中;如果用户选择组合框选项2并单击“添加”,则将打开GUI以向表编号2添加数据,依此类推。 但是,我想用我的Delete GUI更灵活一些,所以我想知道是否可以这样做:

^{pr2}$

这些('%s')的东西应该是字符串,我的程序会从中读取lineEdit.text(). 所以基本上,程序将读取用户在lineEdit中输入的数据,并根据这些数据知道要删除哪一行数据以及从哪个表中删除。我希望你能在这里看到我的观点和问题。如果不可能的话,我想我会为每个表再做12个拷贝粘贴的GUI,但我希望有更好的解决方案。在


Tags: 数据textselfaddifinitdefgui

热门问题