Tous les paramètres ne sont pas utilisés dans l'instruction MySQL : dépannage en Python
Introduction
Lors de l'exécution Requêtes SQL utilisant Python et la bibliothèque mysql.connector, il est crucial d'aligner les marqueurs de paramètres dans l'instruction SQL avec les données transmises à le curseur. Ne pas le faire peut entraîner l'erreur « Tous les paramètres n'ont pas été utilisés dans l'instruction SQL ».
Erreur rencontrée
Considérez l'extrait de code suivant :
import mysql.connector Name = "James" Department = "Finance" StartYear = 2001 CurrentPos = 2001 Link = "" add_user = ("INSERT INTO DB.tbluser " "(username, department, startyear, currentpos, link) " "VALUES (%s, %s, %d, %d, %s)") data_user = (Name, Department, StartYear, CurrentPos, Link)
L'exécution de ce code avec la méthode curseur.execute() déclenchera le message "Tous les paramètres n'ont pas été utilisés dans l'instruction SQL" erreur.
Analyse
L'erreur se produit car le marqueur de paramètre pour les champs StartYear et CurrentPos est incorrect. Le marqueur %d est utilisé pour les entiers, tandis que l'instruction SQL spécifie les marqueurs %s pour tous les paramètres.
Solution
Pour résoudre l'erreur, les marqueurs %d doivent être remplacé par %s marqueurs :
add_user = """INSERT INTO DB.tbluser (username, department, startyear, currentpos, link) VALUES (%s, %s, %s, %s, %s)"""
Cette modification garantit que tous les paramètres sont correctement représentés dans l'instruction SQL et peuvent être correctement liés aux données transmises à le curseur.
Remarque
Bien que les marqueurs de paramètres dans mysql.connector ressemblent au %s utilisé dans le formatage de chaîne Python, les deux syntaxes sont distinctes. D'autres adaptateurs de base de données peuvent utiliser des marqueurs de paramètres différents, tels que ? dans notresql et 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!