Erreur SQLite3 : nombre de valeurs de liaison incompatibles
Lors de l'insertion de valeurs dans une base de données SQLite3 à l'aide de la méthode curseur.execute(), il est crucial de assurez-vous que le nombre de valeurs de liaison fournies correspond au nombre spécifié dans les paramètres de l'instruction SQL. Sinon, vous risquez de rencontrer une erreur similaire à « Nombre incorrect de liaisons fournies ».
Considérez l'extrait de code suivant :
def insert(array): connection=sqlite3.connect('images.db') cursor=connection.cursor() cnt=0 while cnt != len(array): img = array[cnt] print(array[cnt]) cursor.execute('INSERT INTO images VALUES(?)', (img)) cnt+= 1 connection.commit() connection.close()
Lorsque vous essayez d'insérer une chaîne de longueur 74, ce code renvoie l'erreur susmentionnée. La raison en est que la méthode curseur.execute() attend une séquence de valeurs de liaison, alors que (img) n'est qu'une expression.
Pour résoudre ce problème, nous devons convertir (img) en un tuple ou une liste en ajoutant une virgule. Voici le code corrigé :
def insert(array): connection=sqlite3.connect('images.db') cursor=connection.cursor() cnt=0 while cnt != len(array): img = array[cnt] print(array[cnt]) cursor.execute('INSERT INTO images VALUES(?)', (img,)) # Add a comma cnt+= 1 connection.commit() connection.close()
Alternativement, nous pouvons utiliser un littéral de liste :
cursor.execute('INSERT INTO images VALUES(?)', [img])
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!