Добрый день.
Есть необходимость выгружать в таблицу большие объемы данных, для этого делаю так:
db_connect = QtSql.QSqlDatabase.addDatabase("QSQLITE")
db_connect.setDatabaseName("database.db")
db_connect.open()
model = QtSql.QSqlQueryModel(parent=window)
model.setQuery("SELECT id, num, data FROM table")
window.tableView.setModel(model)
Загрузка таблицы из нескольких тысяч строк происходит, в принципе, быстро. Но пришлось сделать некоторые ячейки в таблице редактируемыми. Поэтому решил использовать модель QStandardItemModel:
db_connect = sqlite3.connect("database.db")
cur = db_connect.cursor()
cur.execute("SELECT id, num, data FROM table")
content = cur.fetchall()
row_count = len(content)
db_connect.commit()
cur.close()
db_connect.close()
model = QtGui.QStandardItemModel()
lst1 = []
lst2 = []
lst3 = []
for i in content:
lst1.append(i[0])
lst2.append(i[1])
lst3.append(i[2])
for i in range(0, row_count):
item1 = QtGui.QStandardItem(lst1[i])
item2 = QtGui.QStandardItem(lst2[i])
item3 = QtGui.QStandardItem(lst3[i])
model.appendRow([item1, item2, item3])
item1.setEditable(False)
window.tableView.setModel(model)
Но такой способ требует много времени для загрузки данных в таблицу (я так понимаю это из-за циклов for). Есть ли какой-нибудь способ максимально быстро загрузить данные в таблицу, при этом оставить возможность редактирования? Спасибо.