Bonjour,

Je suis entrain d'écrire une fonction d'importation d'un fichier sous format csv dans une table SQlite3 par le code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
with open(fichier_source_csv, 'r', encoding='utf-8-sig', errors='ignore') as csv_file:
	csv_reader = csv.reader(csv_file, delimiter=';')
	next(csv_reader)
 
	nbre_ligne = 0
	while csv_file.readline(): # Calcul du nombre total de lignes dans le fichier 
		nbre_ligne += 1
 
 
requete = QSqlQuery()
requete.prepare('''DELETE FROM table_clients''') # Vidage de la table
requete.exec_()
 
 
with open(fichier_source_csv, 'r', encoding='utf-8-sig', errors='ignore') as csv_file:
	csv_reader = csv.reader(csv_file, delimiter=';')
	next(csv_reader)
        nbre_lignes_encours= 1
 
   	while nb_lignes > nbre_lignes_encours:
 
             for row in csv_reader:
			id_client = row[0]
			nom_client = row[1]
			adresse_client = row[2]
 
			requete = QSqlQuery()
			requete.prepare('''INSERT INTO table(id_client, nom_client, adresse_client)
                                              VALUES(:id_client, :nom_client, :adresse_client)''')
			requete.bindValue(":id_client", id_client)
			requete.bindValue(":nom_client", nom_client)
			requete.bindValue(":adresse_client", adresse_client)
			requete.exec_()
 
			self.ui.lineEdit_nbre.setText(str(nb_lignes))
			self.ui.lineEdit_nbre_encours.setText(str(nbre_lignes_encours))
			QtCore.QCoreApplication.processEvents()
			nbre_lignes_encours = nbre_lignes_encours + 1 # Affichage de l'incrémentation de l'importation des données
Jusqu'à la tout marche, seulement c'est trop lent. Pour 1000 enregistrements ça prend plusieurs minutes. Même en supprimant l'affichage de l'incrémentation le problème demeure toujours.
Y a t'il une autre solution plus rapide.
Merci