Я использую PyQt для вставки записей в базу данных MySQL. код в основном выглядит какQSqlTableModel.insertRecord() очень медленный
self.table = QSqlTableModel()
self.table.setTable('mytable')
while True:
rec = self.table.record()
values = getValueDictionary()
for k,v in values.items():
rec.setValue(k,QVariant(v))
self.table.insertRecord(-1,rec)
В таблице в настоящее время имеется ~ 50 000 строк. Я подсчитал каждую строку и обнаружил, что функция insertRecord занимает ~ 5 секунд для выполнения, что является неприемлемо медленным. Все остальное быстро.
Для сравнения, я также сделал версию кода, который использует
QSqlQuery.prepare("INSERT INTO mytable (f1,f2,...) VALUES (:f1, :f2,...)")
query.bindValue(":f1",blah)
query.exec_()
В этом случае, все это занимает всего ~ 20 миллисекунд, так что задержка не в соединении с базой данных, насколько я могу сказать.
Я бы предпочел использовать материал QtSql вместо неудобных команд MySQL. Любые идеи о том, как добавить кучу строк в базу данных MySQL с QtSql вместо необработанных команд и с разумной скоростью?
Спасибо, G