Bonjour,
je reste dans le sujet de KYROB :
Erreur Python Sqlite3: near “%”: syntax error
j’utilise le même type de code et j’ai aussi galéré avec la syntaxe de ce code (pour les variables).
Après recherches j’ai trouvé sur votre site (ma bible maintenant!) ce code :
qui permet de rentrer des variables paramétrées.
ce code fonctionne parfaitement, je l’ai mis en œuvre avec des variables plus complexes (avec \ pour les chemins des répertoires, fruits de ma galère dans la syntaxe…) pas de problème. ici la base a 1 index et 2 champs.
par contre si j’utilise une base de données qui n’a qu’un seul champ (plus index, bien sûr), j’ai l’erreur suivante. ici la base a 1 index et 1 champ
« Erreur lors de l’insertion dans la table person Incorrect number of bindings supplied. The current statement uses 1, and there are 3 supplied. »
Dans mon cas, le 3 correspond au nombre de caractères de la valeur à enregistrer. Si je veux enregistrer un texte de 12 car, j’ai « 12 supplied ».
ci dessous le code du site « modifié » pour une base avec 2 champs au lieu de 3 (y compris l’index).
-- coding: utf-8 --
import sqlite3
def insert_into(name):
try:
conn = sqlite3.connect('my_db_1_champ.db')
cur = conn.cursor()
print("Connexion réussie à SQLite")
sql = "INSERT INTO person (name) VALUES (?)"
value = (name)
#cur.execute("INSERT INTO person (name, address) VALUES ('totot','test')")
cur.execute(sql, value)
conn.commit()
print("Enregistrement inséré avec succès dans la table person")
cur.close()
conn.close()
print("Connexion SQLite est fermée")
except sqlite3.Error as error:
print("Erreur lors de l'insertion dans la table person", error)
#ma_chaine= "test var\\tets"
#insert_into('c:\\test\\')
insert_into('Bob')
quelque chose m’échappe entre 2 champs et 1 champ.
j’ai contourné le problème en ajoutant un champ « vide », mais ça n’est pas très élégant…
Si vous avez de quoi éclairer ma lanterne, en espérant avoir décrit correctement mes soucis.
D’avance merci.
jym