我正在使用PyQt将记录插入MySQL数据库。代码基本上看起来像
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数据库的任何想法?
谢谢, ģ
答案 0 :(得分:1)
答案 1 :(得分:1)
你应该在循环之前使用begin并在循环之后提交,或者从MySQL关闭自动提交功能。 这通常会使您的性能提升50%或更多..