markus1578
@markus1578

Работа с QSqlQuery — как ускорить обновление записей?

Есть многопоточное приложение которое обрабатывает url и обновляет информацию в БД sqlite
При большом количестве потоков например около 100 операция обновления даных очень сильно тормозить GUI программы.

Какие есть варинты ускорить обновление
Другую БД использовать не могу
  • Вопрос задан
  • 160 просмотров
Решения вопроса 1
seven5674
@seven5674
Старый я уже что бы что-то в себе менять
Обычно визуализация работы потоков происходит в рамках, например, QTableView без обращения к БД.

Следовательно можно не делать запросы к БД на каждой итерации а добавлять / обновлять данные после того как отработают все потоки.

Что бы это сделать просто храни результаты работы потоков в словаре или списке и после того как потоки отработают используй транзакции для обновления / вставки данных в БД

Например,
self.sqlite_con.open()
self.sqlite_con.transaction()

query = QtSql.QSqlQuery()

for param in self.params:
    sql = ("UPDATE ...")
    query.exec(sql)

self.sqlite_con.commit()
self.sqlite_con.close()


P.S. Sqlite не поддерживает пакетную вставку поэтому addBindValue и execBatch особого профита не даст... Разве что тормоза перейдет в конец выполнения программы
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы