Maison >développement back-end >Tutoriel Python >Comment corriger l'erreur de substitution de paramètres SQLite en Python lors de l'interrogation d'une base de données ?

Comment corriger l'erreur de substitution de paramètres SQLite en Python lors de l'interrogation d'une base de données ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-19 15:25:02480parcourir

How to Fix SQLite Parameter Substitution Error in Python When Querying a Database?

Correction de l'erreur de substitution de paramètres SQLite en Python

Lors de l'interrogation itérative d'une base de données pour des valeurs spécifiques basées sur une liste, un piège courant survient dans l'utilisation du "?" méthode de substitution de paramètres. Bien que destinée à empêcher les injections SQL, cette méthode peut entraîner des erreurs si elle n'est pas utilisée correctement.

Dans le scénario décrit, l'erreur suivante se produit : "sqlite3.ProgrammingError : nombre incorrect de liaisons fournies." Cela indique que le nombre de paramètres fournis à la méthode execute() ne correspond pas au nombre attendu.

L'erreur provient de la création initiale de la table de la base de données, qui comporte 8 colonnes et nécessite donc 8 paramètres dans le requêtes d'insertion ou de mise à jour correspondantes. Cependant, lorsque vous utilisez le « ? » méthode de substitution, le deuxième paramètre doit être une séquence contenant uniquement les valeurs à lier, pas une seule chaîne.

Pour résoudre ce problème, la méthode execute() doit être appelée comme suit :

<code class="python">self.cursor.execute("SELECT weight FROM Equipment WHERE name = ?", [item])</code>

En passant une liste avec un seul élément ([item]) comme deuxième paramètre, le nombre correct de liaisons est fourni et l'erreur est évitée. De plus, l'utilisation du formulaire suggéré est conforme aux recommandations décrites dans la référence de la bibliothèque Python pour les objets curseur sqlite3.

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