Обычно визуализация работы потоков происходит в рамках, например, 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
особого профита не даст... Разве что тормоза перейдет в конец выполнения программы