我想创建一个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
时,它应该在数据库中添加新行(由这五个值组成),但前提是第一个值kirurg_oib_kir
尚未作为主键存在我的数据库。
答案 0 :(得分:1)
实际上,您实现的此方法bool QSqlQuery.exec_ (self, QString query)
可以判断查询是成功还是失败。如果失败,您可以使用QSqlError QSqlQuery.lastError (self)
获取错误代码。因此,表中的“oib_kir”设置为主键。如果已插入重复的主键数据,则该查询应该是错误的。此外,此错误应该发送状态为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的所有错误代码!