Heim >Backend-Entwicklung >Python-Tutorial >Warum gibt meine parametrisierte SQL-Abfrage den Fehler „Nicht alle Argumente wurden während der Zeichenfolgenformatierung konvertiert' aus?

Warum gibt meine parametrisierte SQL-Abfrage den Fehler „Nicht alle Argumente wurden während der Zeichenfolgenformatierung konvertiert' aus?

DDD
DDDOriginal
2024-12-03 14:12:18206Durchsuche

Why Does My Parameterized SQL Query Throw a

Fehlerbehebung bei parametrisierten SQL-Abfragefehlern: Behebung von „Nicht alle Argumente wurden während der Zeichenfolgenformatierung konvertiert“

Beim Versuch, parametrisierte SQL-Abfragen auszuführen, können Entwickler möglicherweise Es tritt der Fehler auf: „TypeError: Nicht alle Argumente wurden während der Zeichenfolgenformatierung konvertiert.“ Dieses Problem tritt normalerweise auf, wenn für die Abfrage eine Zeichenfolgenformatierung mit unzureichenden oder falsch formatierten Parametern verwendet wird.

Um diesen Fehler zu beheben, muss unbedingt sichergestellt werden, dass jeder Platzhalter in der formatierten Zeichenfolge mit einem entsprechenden Argument in der Abfrage übereinstimmt . Im angegebenen Codeausschnitt:

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

Der Platzhalter „%s“ in der Abfrage stellt einen Parameter dar, der bei der Suche durch den Wert ersetzt werden soll. Die Methodeexecute erwartet jedoch eine Liste oder ein Tupel mit den Parametern. Um dies zu beheben, kann die folgende Änderung vorgenommen werden:

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

Durch das Einschließen der Suche in eine Liste wird sie zu einem Iterable, das in einzelne Parameter entpackt werden kann. Die korrekte Syntax zum Ausführen parametrisierter Abfragen in MySQLdb erfordert die Übergabe der Parameter als Liste.

Diese einfache Anpassung stellt sicher, dass alle Argumente bei der String-Formatierung korrekt konvertiert werden und beseitigt den oben genannten Fehler. Alternativ kann anstelle einer Liste auch ein Tupel (eine unveränderliche Liste) zur Übergabe der Parameter verwendet werden.

Das obige ist der detaillierte Inhalt vonWarum gibt meine parametrisierte SQL-Abfrage den Fehler „Nicht alle Argumente wurden während der Zeichenfolgenformatierung konvertiert' 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