Heim > Backend-Entwicklung > Python-Tutorial > Warum löst meine parametrisierte SQL-Abfrage den Fehler „TypeError: Nicht alle Argumente konvertiert' aus?

Warum löst meine parametrisierte SQL-Abfrage den Fehler „TypeError: Nicht alle Argumente konvertiert' aus?

Linda Hamilton
Freigeben: 2024-12-30 15:06:11
Original
930 Leute haben es durchsucht

Why Does My Parameterized SQL Query Throw a

TypeError: Nicht alle Argumente wurden während der Zeichenfolgenformatierung in parametrisierten SQL-Abfragen konvertiert

Es trat der Fehler „TypeError: Nicht alle Argumente wurden während der Zeichenfolgenformatierung konvertiert“ auf " bei der Verwendung von Zeichenfolgen in einer parametrisierten SQL-Abfrage ist ein häufiges Problem.

Das Codebeispiel vorausgesetzt:

cur.execute("SELECT * FROM records WHERE email LIKE '%s'", search)
Nach dem Login kopieren

versucht, eine Abfrage mit einer Zeichenfolge auszuführen, die mit einem Platzhalter (%s) für den Suchparameter formatiert ist. Diese Methode ist jedoch falsch.

Um diesen Fehler zu beheben, besteht die richtige Methode zum Ausführen einer parametrisierten Abfrage darin, die Platzhalterwerte als Liste bereitzustellen:

cur.execute("SELECT * FROM records WHERE email LIKE %s", [search])
Nach dem Login kopieren

In diesem Fall [ search] ist eine Liste, die den einzelnen Suchparameter enthält. MySQLdb (und andere ähnliche Datenbankbibliotheken) erwarten eine Liste von Werten, die konvertiert und formatiert werden müssen. Die direkte Übergabe eines einzelnen Werts führt zu dem Fehler.

Der Grund dafür ist, dass eine parametrisierte Abfrage mehrere Platzhalter in der SQL-Anweisung enthalten kann, die jeweils einen anderen Wert darstellen. Durch die Bereitstellung der Werte als Liste kann die Datenbankbibliothek die Liste durchlaufen und jeden Wert entsprechend konvertieren.

Daher ist es bei der Verwendung von Platzhaltern in parametrisierten SQL-Abfragen wichtig, die Werte als Liste oder Tupel bereitzustellen . Dadurch wird sichergestellt, dass alle Argumente korrekt konvertiert und formatiert werden, wodurch der Fehler „Nicht alle Argumente konvertiert“ verhindert wird.

Das obige ist der detaillierte Inhalt vonWarum löst meine parametrisierte SQL-Abfrage den Fehler „TypeError: Nicht alle Argumente konvertiert' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage