如何将数据库文件中的数据显示到pyqt上,以便用户可以添加/删除/编辑数据?

时间:2014-04-24 11:55:23

标签: python sql qt pyqt

我在python中使用SQL命令创建了一个数据库文件。我也使用了很多外键但是我不知道如何用python将这些数据显示到qt上?有任何想法吗?我还希望用户能够添加/编辑/删除数据

2 个答案:

答案 0 :(得分:3)

因为这个问题有点广泛而且一般而言请从http://zetcode.com/gui/pyqt4/开始,它会对你有所帮助。一旦你知道你在处理什么,你可以使用QtDesigner制作用户表单并在那里添加函数,但每次在Qt中编辑表单时都要小心,所有添加的python代码都将被删除,所以我建议你遵循一个您项目的MVC模式。

编辑:这可能是您需要显示数据的摘要:考虑qttable是您班级中的网格

def fillQTable(self):
    #data = [('1','2','3','4'),('5','6','7','8')] #this is from database
    data = self.getData()
    rowCount = len(data)
    colCount = 4
    self.qttable.setRowCount(rowCount)
    self.qttable.setColumnCount(colCount)
    self.qttabke.verticalHeader().setVisible(False)
    self.qttabke.setHorizontalHeaderLabels(QString("num1;num2;num3;num4").split(";"))
    self.qttabke.horizontalHeader().setVisible(True)
    for s in range(colCount):
        self.qttable.horizontalHeaderItem(s).setTextAlignment(Qt.AlignLeft)
    for i, row in enumerate(data):
        for j, col in enumerate(row):
            item = QTableWidgetItem(col)
            self.qttabke.setItem(i, j, item)

def connectionDB(self):
    try:
        cnn=pyodbc.connect("DRIVER={Microsoft Access Driver (*.mdb)}\
                           ;DBQ=Data.mdb") # you can use the db library you like here
                                           # i have used pyodbc to connect to MS  Access db
        return cnn
    except Exception, e:
        print e

def getData(self):
    cnn = self.connectionDB()
    cursor = cnn.cursor()
    cursor.execute("select * from DataTable") # DataTable is a table in Data.mdb
    rawData = cursor.fetchall()
    cnn.commit()
    cnn.close()
    return rawData

答案 1 :(得分:1)

这个问题有点宽泛,但无论如何我都会尝试回答它。 Qt确实附带了一些可以连接到数据库的模型。特别是像QSqlTableModel这样的类。如果将这样的模型连接到数据库并将其设置为QTableView的模型,它应该可以为您提供所需的大部分行为。

不幸的是,我不认为我能比这更具体。一旦编写了一些代码,就可以随意提出一个关于特定问题的新问题(记得包含示例代码!)