Как можно контролировать количество данных, получаемых из SQLite, при их подгрузке, при использовании QSqlTableModel и QSqlQueryModel?
Есть пример для QSqlTableModel (для QSqlQueryModel код будет почти такой же):
from PyQt5.QtWidgets import QApplication, QTableView
from PyQt5.QtSql import QSqlDatabase, QSqlTableModel, QSqlQuery
db = QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('database.sqlite')
if not db.open():
raise Exception(db.lastError().text())
TABLE = 'word2emoji'
query = QSqlQuery()
query.exec(f'SELECT COUNT(*) FROM {TABLE}')
query.next()
TABLE_ROW_COUNT = query.value(0)
def update_window_title():
mw.setWindowTitle(f'{model.rowCount()} / {TABLE_ROW_COUNT}')
app = QApplication([])
model = QSqlTableModel()
model.rowsInserted.connect(update_window_title)
model.setTable(TABLE)
model.select()
mw = QTableView()
mw.setEditTriggers(QTableView.NoEditTriggers)
mw.setModel(model)
mw.resize(600, 480)
mw.show()
update_window_title()
app.exec()
При запуске из базы считываются 256 записей и, при прокрутке вниз, подгружаются новые порции
Хотелось бы контролировать количество записей, чтобы меньше отображаться, например по 100
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Ответ – нельзя.
Это значение захаркодено (см. QSQL_PREFETCH в qsqlquerymodel.cpp) и поменять можно только пересобрав Qt, либо сделав свою модель и в ней переопределить логику в fetchMore