PyQt:从数据库中提取数据并将其与QLineEdi进行比较

2024-05-15 06:20:24 发布

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

我想创建一个if语句,将QLineEdit中插入的值与表中的值(主键)进行比较,如果它已经存在,它将显示消息“您输入的标识号已经在使用中”。在

这是准则最重要的部分:

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):
                     query = QSqlQuery()
                     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())))

因此,基本上,当kirurg_Add_button被单击时,它应该在数据库中添加新行(由这五个值组成),但前提是第一个值{}在我的数据库中还没有作为主键存在。在


Tags: textselfaddinitdefbuttonqueryinsert
1条回答
网友
1楼 · 发布于 2024-05-15 06:20:24

实际上,您实现的这个方法bool QSqlQuery.exec_ (self, QString query)可以判断查询是成功还是失败。如果失败,可以使用QSqlError QSqlQuery.lastError (self)获取错误代码。因此,表中的“oib_kir”设置为主键。如果插入了重复的主键数据,则该查询应该是错误的。另外,这个错误应该是send status到pyqt。在

此代码尚未测试。请仅用于帮会路线

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() # <- return it should be QString
                     prezime       = self.kirurg_prezime_lineEdit.text()
                     ime           = self.kirurg_ime_lineEdit.text()
                     adresa        = self.kirurg_adresa_lineEdit.text()
                     broj_telefona = self.kirurg_broj_telefona_lineEdit.text()
                     if not all([not oib_kir.isEmpty(), not prezime.isEmpty(), not ime.isEmpty(), not adresa.isEmpty(), not broj_telefona.isEmpty()]): # <- If python string use bool(DATA)
                         QMessageBox.critical(self, 'Query error', 'Data must not empty')
                     else:
                         query = QSqlQuery()
                         status = query.exec("INSERT INTO kirurg (oib_kir, prezime, ime, adresa, broj_telefona)"
                                "VALUES ('%s', '%s', '%s', '%s', '%s')" % (''.join(oib_kir),
                                                                           ''.join(prezime),
                                                                           ''.join(ime),
                                                                           ''.join(adresa),
                                                                           ''.join(broj_telefona)))
                         if status is not True:
                             errorText = query.lastError().text()
                             QMessageBox.critical(self, 'Query error', errorText)

注意:不直接检查“您输入的标识号已在使用中”,但您有SQL的所有错误代码!在

Useful reference for QSqlQuery

Useful reference for QString

相关问题 更多 >

    热门问题