PyQt -使用SQL直接与QSqlTableModel



我正在编写一个简单的学生成绩管理器,用于在PyQt上练习编程(我不想再使用可怕的Visual Basic)。但我在选择数据模型时遇到了一个大问题。

我先发现了QSqlTableModel,它是一个自动更新的好模型。麻烦的是,我需要使用大量的SQL (JOIN, WHERE)从数据库中选择数据。QSqlTableModel只有select()filter()

然后我找到QSqlQueryModel,但它是只读的。所以我重写了它的setData()方法。所以现在是读写。遗憾的是,QSqlQueryModel的可用性不如QSqlTableModel

如你所见,如果我能使用SQL与QSqlTableModel,我可以解决我所有的问题。

所以…?

QSqlTableModelsetQuery方法,您可以使用它来设置自定义查询,如:

model = QSqlTableModel()
query = QSqlQuery(your_query)
model.setQuery(query)

然而,Qt文档声明:

这个函数只是调用QSqlQueryModel::setQuery(query)。通常不应该在QSqlTableModel上调用它。相反,使用setTable()、setSort()、setFilter()等来设置查询。

最新更新