Heim >Datenbank >MySQL-Tutorial >Warum gibt mein Python-MySQL-Code den Fehler „Nicht alle Parameter wurden in der SQL-Anweisung verwendet' aus?

Warum gibt mein Python-MySQL-Code den Fehler „Nicht alle Parameter wurden in der SQL-Anweisung verwendet' aus?

DDD
DDDOriginal
2025-01-06 20:27:43914Durchsuche

Why Does My Python MySQL Code Throw a

Nicht alle Parameter werden in der MySQL-Anweisung verwendet: Fehlerbehebung in Python

Einführung

Bei der Ausführung Bei SQL-Abfragen mit Python und der mysql.connector-Bibliothek ist es wichtig, die Parametermarkierungen in der SQL-Anweisung an der auszurichten Daten, die an den Cursor übergeben werden. Andernfalls kann der Fehler „In der SQL-Anweisung wurden nicht alle Parameter verwendet“ auftreten.

Fehler aufgetreten

Beachten Sie den folgenden Codeausschnitt:

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)

Das Ausführen dieses Codes mit der Methode „cursor.execute()“ löst die Fehlermeldung „In der SQL-Anweisung wurden nicht alle Parameter verwendet“ aus. Fehler.

Analyse

Der Fehler tritt auf, weil die Parametermarkierung für die Felder StartYear und CurrentPos falsch ist. Der %d-Marker wird für Ganzzahlen verwendet, während die SQL-Anweisung %s-Marker für alle Parameter angibt.

Lösung

Um den Fehler zu beheben, sollten die %d-Marker verwendet werden durch %s-Marker ersetzt werden:

add_user = """INSERT INTO DB.tbluser 
              (username, department, startyear, currentpos, link) 
              VALUES (%s, %s, %s, %s, %s)"""

Diese Änderung stellt sicher, dass alle Parameter in der SQL-Anweisung ordnungsgemäß dargestellt werden und korrekt an die an übergebenen Daten gebunden werden können Cursor.

Hinweis

Obwohl die Parametermarkierungen in mysql.connector dem %s ähneln, das bei der Python-Zeichenfolgenformatierung verwendet wird, sind die beiden Syntaxen unterschiedlich. Andere Datenbankadapter verwenden möglicherweise andere Parametermarkierungen, z. B. ? in unserem SQL und SQLite3.

Das obige ist der detaillierte Inhalt vonWarum gibt mein Python-MySQL-Code den Fehler „Nicht alle Parameter wurden in der SQL-Anweisung verwendet' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn