在PyQt中将lineEdit中的数据插入mysql中是空白的

时间:2016-04-25 10:05:06

标签: python qt pyqt4

我想从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_())

0 个答案:

没有答案