QSQLELATIANTALTABLEMODEL仅填充了第一个256个记录



i具有以下简单模型,使用pyqt5,sqlite3和python3.5.2。

class choicesModel(QDialog):
    def __init__(self, parent=None):
        super(choicesModel, self).__init__()
        query = QSqlQuery()
        query.prepare("SELECT COUNT(*) FROM resident_choices")
        query.exec_()
        query.next()
        dbrows = query.value(0)
        print("rows in db: ", dbrows)
        self.choicesModel = QSqlRelationalTableModel(self)
        self.choicesModel.setEditStrategy(QSqlTableModel.OnManualSubmit)
        self.choicesModel.setTable("resident_choices")
        self.choicesModel.select()
        rows = self.choicesModel.rowCount()
        print("rows returned by model.select(): ", rows)

执行模型会产生以下输出:

db中的行:831

sear after model.Select():256

看来,初始选择仅填充了第一个256个记录。这是一个sqlite3问题,如果是这样,我该如何填充所有记录(数据库只有大约850个记录)。如果不是,我如何强制加载所有记录?

结果是,在我更改代理滤波器条件之前,使用近距模型和代理视图最初不会显示所有记录 - 也就是说,我必须触发其余记录的加载。

记录的数量在QSqlQueryModel类中用作#define QSQL_PREFETCH 255。为了覆盖它,您将必须明确获取所有行:

while self.choicesModel.canFetchMore():
    self.choicesModel.fetchMore()

您可能需要每次更新模型时都需要这样的代码,因此最好创建自己的子类和重新成像fetchmore。

相关内容

  • 没有找到相关文章

最新更新