python - QSqlRelationalTableModel 附加相关列

标签 python qt sqlite pyqt pyside

我有一个 QSqlRelationalTableModel 设置,其中的 QSqlRelation 到另一个表工作得很好。现在,我想在相关表上查找该行的其他列。我该如何实现这个目标?

示例表:

city ('id', 'name', 'state_id')
state ('id', 'name', 'capital')

到目前为止我所拥有的:

model = QtSql.QSqlRelationalTableModel()
model.setTable('city')
model.setRelation(2, QtSql.QSqlRelation("state", "id", "name"))
model.select()

这会给我一行像:

| 1 | 'San Francisco' | 'California' |

现在我想从城市表中查找州模型中的首都。我该怎么做呢?我对 setRelation 的理解是,它从 X 列的 main_table 中获取 id 并将其替换为映射列,但我不想更改状态表。我已经研究了 QSqlRecordQSqlRelation,但我似乎遗漏了一些东西。

谢谢!

最佳答案

当您想要显示的表中有外键时,

QSqlRelationalTableModel 非常有用。在您的情况下,capital 不是city 表的列。

您应该使用 QSqlQueryModelJOIN 这两个表来获取您想要的列。像这样的东西应该可以工作

model = QtSql.QSqlQueryModel()
model.setQuery("SELECT city.id, city.name, state.name, state.capital FROM city "
                "INNER JOIN state ON city.state_id = state.id");
model.select()

关于python - QSqlRelationalTableModel 附加相关列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36437055/

相关文章:

python - 如何从名为 __json__ 或适配器的内部重用自定义 Pyramid json 渲染器?

java - contentResolver 返回 null

python - sqlite3 不按计数分组

sql - 在 SQL 中,在 where 语句中返回值时 "IS"和 "="之间有区别吗?

python - 使用 Selenium 从网页中提取文本不起作用

python - 使用 RandomForestClassifier.predict_proba 与 RandomForestRegressor.predict

python - geopandas:如何 "normalize"geoseries

linux - Qt交叉编译Raspi3 - fatal error : unistd. h: No such file or directory

c++ - 在 Qt 中发送 SOAP 请求时出现 ProtocolUnknownError

qt - 在 QTableWidget 中分别处理单击和双击