Bonjour

Débutant en python , je galère pour insérer des données dans un table sqlite.
Si j’insère une donnée seule (dates,index,metres cubes) ça fonctionne.
c'est quand j’insère une des données provenant de variable.
Pour info j'importe mes données d'un fichier xls avec le module xlrd et aussi le module sqlite3
j'ai essayé plusieurs façon parenthèse, crochet, sans , a chaque fois j'ai un message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
for c in insert:
    print("c : ",c)
    print("len de c :", len(c))
    sql_insert ="""INSERT INTO sdei (Dates,Releve,Metres_cubes) VALUES (?, ?, ?)"""
    cursor.execute(sql_insert, [c])
Donne :
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 3, and there are 1 supplied.
Voici une partie de code :
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
 
print("Nb de lignes : ", nb_ligne())
print("Dates :", dates(nb_ligne()))
print("Index compteur:", index_compteur(nb_ligne()))
print("Metres Cube :", metre_cubes(nb_ligne()))
 
print("------------------")
d = dates(nb_ligne())
i = index_compteur(nb_ligne())
m = metre_cubes(nb_ligne())
print()
insert = [d,i,m]
print("insert : ", insert)
 
print("Len de insert :",len(insert))
for c in insert:
    print("c : ",c)
    print("len de c :", len(c))
    sql_insert ="""INSERT INTO sdei (Dates,Releve,Metres_cubes) VALUES (?, ?, ?)"""
    cursor.execute(sql_insert, [c])
 
 
 
conn.commit()
 
conn.close()
print("Fin du programme")
et la sortie :
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
 
Nb de lignes :  6
Dates : ['01-08-2021', '02-08-2021', '03-08-2021', '04-08-2021', '05-08-2021', '06-08-2021']
Index compteur: [185.289, 185.316, 185.329, 185.364, 185.371, 185.371]
Metres Cube : [0.142, 0.027, 0.013, 0.035, 0.007, 0.0]
------------------
 
insert :  [['01-08-2021', '02-08-2021', '03-08-2021', '04-08-2021', '05-08-2021', '06-08-2021'], [185.289, 185.316, 185.329, 185.364, 185.371, 185.371], [0.142, 0.027, 0.013, 0.035, 0.007, 0.0]]
Len de insert : 3
c :  ['01-08-2021', '02-08-2021', '03-08-2021', '04-08-2021', '05-08-2021', '06-08-2021']
len de c : 6
Traceback (most recent call last):
  File "/home/thierry/PycharmProjects/debutpython/venv/pythonProject/main.py", line 85, in <module>
    cursor.execute(sql_insert, [c])
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 3, and there are 1 supplied.
 
Process finished with exit code 1
Je ne sais plus trop quoi faire et a force de forum ou il n'indique pas la même chose je suis un peu perdu et je pense que j'ai mélangé toutes les méthodes
J'ai essayé aussi de ne pas passer par la boucle et d'appeler directement insert , mais c'est pareil
Quand je ne passe la ligne sql_insert et cursor.execute dans la boucle , la sortie est légèrement différente car la boucle s'éxecute :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
for c in insert:
    print("c : ",c)
    print("len de c :", len(c))
sql_insert ="""INSERT INTO sdei (Dates,Releve,Metres_cubes) VALUES (?, ?, ?)"""
cursor.execute(sql_insert, [insert])
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
 
insert :  [['01-08-2021', '02-08-2021', '03-08-2021', '04-08-2021', '05-08-2021', '06-08-2021'], [185.289, 185.316, 185.329, 185.364, 185.371, 185.371], [0.142, 0.027, 0.013, 0.035, 0.007, 0.0]]
Len de insert : 3
c :  ['01-08-2021', '02-08-2021', '03-08-2021', '04-08-2021', '05-08-2021', '06-08-2021']
len de c : 6
c :  [185.289, 185.316, 185.329, 185.364, 185.371, 185.371]
len de c : 6
c :  [0.142, 0.027, 0.013, 0.035, 0.007, 0.0]
len de c : 6
Traceback (most recent call last):
  File "/home/thierry/PycharmProjects/debutpython/venv/pythonProject/main.py", line 85, in <module>
    cursor.execute(sql_insert, [insert])
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 3, and there are 1 supplied.
 
Process finished with exit code 1
j'ai essayé aussi executemany , ça ne fonctionne pas mieux
Merci
Thierry