2017-09-14 56 views
0

我忙于一个大学项目,我需要创建一个SQL数据库并能够通过Python和PyQT中创建的程序处理数据。无法使用QTableView在PyQT应用程序中显示来自MySQL的信息

我已经创建了数据库,表中添加了表格和一些数据,但是现在我需要使用QTableView小部件来显示数据,并且当我运行它时,我只是得到一个空白窗口。

我注意到,如果我将诸如用户名,密码或数据库名称等细节更改为随机的东西,我仍然会得到相同的结果,这告诉我没有发生与数据库的连接。

有人可以看看我的代码,并协助?即使只是一些建议,以获得错误消息?

from __future__ import division 
import sys 
from PyQt4 import QtCore, QtGui, QtSql 

from showrec import* 

def createConnection(): 
    db=QtSql.QSqlDatabase.addDatabase('QMYSQL') 
    db.setHostName('localhost') 
    db.setDatabaseName('database') 
    db.setUserName('username') 
    db.setPassword('password') 
    db.open() 
    print(db.lastError().text()) 
    return True 

class MyForm(QtGui.QDialog): 
    def _init_(self,parent=None): 
     QtGui.QWidget._init_(self,parent) 
     self.ui=Ui_Dialog() 
     self.ui.setp.Ui(self) 
     self.model=QtSQL.QSqlTableModel(self) 
     self.Model.SetTable("table1") 
     self.Model.setEditStrategy(QtSql.QSqlTableModel.OnManualSubmit) 
     self.model.select() 
     self.ui.tableView.SetModel(self.model) 

if __name__ == "__main__": 

    app=QtGui.QApplication(sys.argv) 
    if not createConnection(): 
     sys.exit(1) 
    myapp=MyForm() 
    myapp.show() 
    sys.exit(app.exec_())` 
+0

'self.ui.tableView.SetModel(self.model)':是不是'setModel'? – JonBrave

+0

你在'createConnection'中创建的db对象停留在这个函数中,你可能需要返回并在你的类中赋值,或者使这个函数成为一个类方法,并使用'self.db = ...' – PRMoureu

回答

0

好的。我发现我的错误 我把只有一个_之前和之后的init,而不是 高清初始化(自我,父母=无):

代替: 高清初始化(自我,父母=无):

愚蠢的错误,但让我忙了几个小时。 感谢您的回复JonBrave

相关问题