Nombre incorrect de liaisons
Lors de la tentative d'insertion d'une chaîne dans une base de données SQLite à l'aide du code ci-dessous, une erreur se produit indiquant un numéro incorrect de liaisons :
def insert(array): connection=sqlite3.connect('images.db') cursor=connection.cursor() cnt=0 while cnt != len(array): img = array[cnt] cursor.execute('INSERT INTO images VALUES(?)', (img)) cnt+= 1 connection.commit() connection.close()
Le message d'erreur apparaît lorsque la chaîne à insérer fait 74 caractères long.
La racine du problème
Le code tente de transmettre une séquence d'éléments à la méthodeexecute() en tant que valeurs de liaison. Cependant, le paramètre de valeur de liaison nécessite un tuple et le code néglige de fournir la virgule nécessaire pour créer un tuple.
cursor.execute('INSERT INTO images VALUES(?)', (img)) # Missing comma
Le correctif
Pour résoudre le problème, ajoutez une virgule à la fin du paramètre de valeur de liaison pour créer un tuple :
cursor.execute('INSERT INTO images VALUES(?)', (img,))
Vous pouvez également utiliser une liste littéral, qui est également reconnu comme une séquence valide :
cursor.execute('INSERT INTO images VALUES(?)', [img])
Avec l'une ou l'autre correction, le code insérera correctement le chemin de l'image dans la base de données sans déclencher le message d'erreur concernant un nombre incorrect de liaisons.
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!