如何使用QSqlQueryModel仅在sqlite的tableview中显示最后两行?

问题描述

下面是我的示例代码

db = QsqlDatabase.addDatabase('QsqlITE')
db.setDatabaseName('book.db')
db.open()

model = QsqlQueryModel()
model.setQuery("SELECT * FROM card")
self.tableView.setModel(model)

我正在使用QsqlQueryModel,Qtablevie,sqlite3,并且能够查看表中的所有行。但是我只想查看表的最后两行,它们是新插入到表中的行。该表没有“ id”字段,并且具有数字和文本字段。这怎么可能? 下面是表格图片

enter image description here

解决方法

如果要获取指示插入顺序的任何字段的最后2个元素的顺序(在您的情况下为“ rowid”),则必须在SQL命令中使用过滤器,如下所示:

model.setQuery("SELECT * FROM card ORDER BY rowid DESC LIMIT 2")

另一个可能的选择是使用QSortFilterProxyModel过滤表,但是效率较低。