将查询设置为模型并进一步限制它
Posted
技术标签:
【中文标题】将查询设置为模型并进一步限制它【英文标题】:Set query as a model and limit it further 【发布时间】:2015-01-11 16:31:18 【问题描述】:在我的程序中,我使用了一个带有“论文”表的 sqlite 数据库。我有几个QTableviews
显示论文中包含的数据。每个视图一个模型。我像这样初始化我的模型:
model.setTable("papers")
但是,在每个QTableView
中,我只想显示数据的一个子集。该子集由 sql 查询确定。例如:
query = QtSql.QSqlQuery()
query.prepare("SELECT id FROM papers WHERE new=1")
query.exec_()
model.setQuery(query)
但是,如果我想对子集(而不是整个模型)执行附加查询,它开始变得非常复杂。所以我想知道是否有办法:
将通过 sql 查询获得的数据子集定义为模型 对查询执行附加查询例如:
在我选择了 new=1 的所有项目后,我想要所有的 like=1。
【问题讨论】:
您可以创建一个临时表。但是,在大多数情况下,您只需在where
中添加额外的子句即可获得改进。
是的,但我很想避免在 where 语句中添加子句
您可以使用代理模型来添加您需要的命令。
Afaik,您可以在 Qt 中过滤视图,并展示可能来自不同查询的不同模型。我不知道什么更好,我只知道它有不同的可能性。
【参考方案1】:
为每个视图使用一个 QSqlTableview。就像你做的那样,为每个模型添加一个模型。通过添加示例向任何表添加额外的过滤
model.setfilter(new=1);
此过滤器会在底层选择中产生一个 where 子句。
【讨论】:
以上是关于将查询设置为模型并进一步限制它的主要内容,如果未能解决你的问题,请参考以下文章