Python:为什么我的数据库不会在这个窗口中显示?

时间:2014-01-12 20:15:21

标签: python sql user-interface pyqt

from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtSql import *
import sys
class Test(QMainWindow):
    def __init__(self):
        super().__init__()
        self.create()
    def create(self):
        self.db = QSqlDatabase.addDatabase('SQLITE')
        self.db.setDatabaseName('management.db')
        self.db.open()

        self.x()
        self.layout =QVBoxLayout()
        self.layout.addWidget(self.table_view)
        self.widget=QWidget()
        self.widget.setLayout(self.layout)
        self.setCentralWidget(self.widget)

    def x(self):
        self.model = QSqlTableModel()
        self.model.setEditStrategy(QSqlTableModel.OnManualSubmit)
        self.model.setTable("management")
        self.table_view=QTableView()
        self.table_view.setModel(self.model)
        self.table_view.model().select()
        self.table_view.show()
ap = QApplication(sys.argv)
wi = Test()
wi.show()
wi.raise_()
ap.exec_()

上面的代码是一个简单的对象,我打算创建一个窗口来查看我的数据库的内容。但它产生的只是一个空白的白盒子。谢谢!

数据库中包含数据,由不同的表(enitities)组成。这就是我能说的全部。

1 个答案:

答案 0 :(得分:1)

看起来你正在使用无效的驱动程序类型。

QSqlDatabase的Qt文档说你想要其中一个:

The currently available driver types are:  

Driver Type  Description  
QDB2         IBM DB2  
QIBASE       Borland InterBase Driver  
QMYSQL       MySQL Driver  
QOCI         Oracle Call Interface Driver  
QODBC        ODBC Driver (includes Microsoft SQL Server)  
QPSQL        PostgreSQL Driver  
QSQLITE      SQLite version 3 or above  
QSQLITE2     SQLite version 2  
QTDS         Sybase Adaptive Server  

所以看起来你需要尝试:

    self.db = QSqlDatabase.addDatabase('QSQLITE')