J'utilise PyQt pour insérer des enregistrements dans une base de données MySQL. le code ressemble essentiellement àQSqlTableModel.insertRecord() est très lent
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)
La table contient actuellement ~ 50 000 lignes. J'ai chronométré chaque ligne et trouvé que la fonction insertRecord prend ~ 5 secondes pour s'exécuter, ce qui est inacceptable lent. Tout le reste est rapide.
A titre de comparaison, j'ai aussi fait une version du code qui utilise
QSqlQuery.prepare("INSERT INTO mytable (f1,f2,...) VALUES (:f1, :f2,...)")
query.bindValue(":f1",blah)
query.exec_()
Dans ce cas, tout cela ne prend que ~ 20 millisecondes, de sorte que le retard est pas dans la connexion de base de données pour autant que je Peut dire.
Je préfère vraiment utiliser les trucs QtSql au lieu des commandes MySQL. Des idées sur comment ajouter un tas de lignes à une base de données MySQL avec QtSql au lieu de commandes brutes et à une vitesse raisonnable?
Merci, G