Maison > base de données > tutoriel mysql > Pourquoi mon code Python MySQL génère-t-il une erreur « Tous les paramètres n'ont pas été utilisés dans l'instruction SQL » ?

Pourquoi mon code Python MySQL génère-t-il une erreur « Tous les paramètres n'ont pas été utilisés dans l'instruction SQL » ?

DDD
Libérer: 2025-01-06 20:27:43
original
891 Les gens l'ont consulté

Why Does My Python MySQL Code Throw a

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

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

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal