sql - PyQt - 直接使用 SQL 和 QSqlTableModel

标签 sql database qt pyqt

我正在编写一个简单的学生成绩管理器,用于在 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 documentation状态:

This function simply calls QSqlQueryModel::setQuery(query). You should normally not call it on a QSqlTableModel. Instead, use setTable(), setSort(), setFilter(), etc., to set up the query.

关于sql - PyQt - 直接使用 SQL 和 QSqlTableModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14027676/

相关文章:

c++ - 为什么我无法放大通过 QSizeGrip 添加到 QGraphicScene 的小部件?

sql - 错误 : query has no destination for result data

MySQL - 从大数据库中删除一些特定的表

java - MySQL 连接不适用于 HikariCP

qt - QMake:范围如何工作?

c++ - 在 Yocto 中使用 Cmake 构建 Qt5

sql - 在一个 SQL 查询中遍历 "linked list"?

php - 为什么我的嵌套查询使 SQL Server 速度减慢这么多?

sql - 显示 Postgres 中关系、序列和函数的默认访问权限

database - 在 PL/pgSQL 中使用变量存储查询结果