我正在使用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命令。關於如何使用QtSql而不是原始命令並以合理的速度將一堆行添加到MySQL數據庫的任何想法?
感謝, 摹