我正在编写一个简单的学生成绩管理器,用于在PyQt上练习编程(我不想再使用可怕的 Visual Basic )。但是我在选择数据模型时遇到了很大的问题。
我首先找到了QSqlTableModel
,这是一个很好的自动更新模型。麻烦的是,我需要使用大量的SQL(JOIN
,WHERE
)来从数据库中选择数据。 QSqlTableModel
仅select()
和filter()
。
然后我找到QSqlQueryModel
,但它是只读的。所以我重写了它的setData()
方法。所以它现在是读写的。不幸的是,QSqlQueryModel
的可用功能少于QSqlTableModel
。
如您所见,如果我可以使用QSqlTableModel
的SQL,我可以解决所有问题。
所以...?
答案 0 :(得分:2)
QSqlTableModel
有setQuery
方法,您可以使用该方法设置自定义查询,例如:
model = QSqlTableModel()
query = QSqlQuery(your_query)
model.setQuery(query)
然而,Qt documentation州:
此函数只调用QSqlQueryModel :: setQuery(query)。您通常不应该在QSqlTableModel上调用它。相反,使用setTable(),setSort(),setFilter()等来设置查询。