Maison >développement back-end >Tutoriel Python >Pourquoi mon instruction SQLite INSERT échoue-t-elle avec « Nombre incorrect de liaisons » pour les chaînes longues ?

Pourquoi mon instruction SQLite INSERT échoue-t-elle avec « Nombre incorrect de liaisons » pour les chaînes longues ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-30 10:23:15821parcourir

Why Does My SQLite INSERT Statement Fail with

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn