Qt QSqlTableModel.insertRecord()速度非常慢

Qt QSqlTableModel.insertRecord()速度非常慢,qt,insert,performance,pyqt,record,Qt,Insert,Performance,Pyqt,Record,我正在使用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.insertReco

我正在使用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)
该表当前有约50000行。 我对每一行进行了计时,发现insertRecord函数的执行时间约为5秒,速度慢得令人无法接受。其他一切都很快

为了进行比较,我还制作了一个使用

QSqlQuery.prepare("INSERT INTO mytable (f1,f2,...) VALUES (:f1, :f2,...)")
query.bindValue(":f1",blah)
query.exec_()
在本例中,整个过程只需约20毫秒,因此据我所知,延迟并不在数据库连接中

我真的更喜欢使用QtSql,而不是笨拙的MySQL命令。关于如何使用QtSql而不是原始命令以合理的速度向MySQL数据库添加一堆行,有什么想法吗

谢谢, G

要尝试的事情:

  • 将设置为
    QSqlTableModel.OnManualSubmit
  • 批量插入带有

看看是否有帮助…

您应该在循环之前开始并在循环之后提交,或者从MySQL关闭自动提交功能。。 这通常会使性能提高50%或更多