Maison > développement back-end > Tutoriel Python > Pourquoi SQLite3 renvoie-t-il une erreur « Nombre de valeurs de liaison incompatibles » lors de l'insertion de données ?

Pourquoi SQLite3 renvoie-t-il une erreur « Nombre de valeurs de liaison incompatibles » lors de l'insertion de données ?

Linda Hamilton
Libérer: 2024-11-29 01:15:13
original
213 Les gens l'ont consulté

Why Does SQLite3 Throw a

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()
Copier après la connexion

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()
Copier après la connexion

Alternativement, nous pouvons utiliser un littéral de liste :

cursor.execute('INSERT INTO images VALUES(?)', [img])
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal