我想从lineEdit获取数据,在tablewidget中显示它并将其插入到mysql中。 但它的奇怪的桌面工具是空白的,Item和mysql中的任何内容都没有变化。我看到了Python/PyQT QString won't insert into MySQL database。但我失败了。
from PyQt4 import QtCore, QtGui,QtSql
import sys
from test2 import Ui_MainWindow
#I use Qt designer to do the UI
class StartQt4(QtGui.QMainWindow,Ui_MainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setupUi(self)
self.db = QtSql.QSqlDatabase.addDatabase("QMYSQL") #select database type
self.db.setHostName("localhost")
self.db.setDatabaseName("test")
self.db.setUserName("root")
self.db.setPassword("")
if (self.db.open()):
self.showdata()
else:
print "failed"
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("clicked()"), self.add)
def add(self):
name0 = str(self.lineEdit.text())
name1 = str(self.lineEdit_2.text())
name2 = str(self.lineEdit_3.text())
print type(name0)
self.query=QtSql.QSqlQuery(self.db)
self.query.exec_("insert into qiu (name0,nam1,name2) value ('%s','%s','%s')" %(''.join(name0),''.join(name1),''.join(name2)))
self.query.exec_("commit")
lastrow=self.tableWidget.rowCount()
self.tableWidget.insertRow(lastrow)
self.showdata()
def showdata(self):
query=QtSql.QSqlQuery(self.db)
query.exec_("select * from qiu")
for i in range(0,self.tableWidget.rowCount()):
query.next()
name0 = query.value(0).toString()
name1 = query.value(1).toString()
name2 = query.value(2).toString()
self.tableWidget.setItem(i, 0, QtGui.QTableWidgetItem(name0))
self.tableWidget.setItem(i, 1, QtGui.QTableWidgetItem(name1))
self.tableWidget.setItem(i, 2, QtGui.QTableWidgetItem(name2))
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
myapp = StartQt4()
myapp.show()
sys.exit(app.exec_())