Heim  >  Artikel  >  Datenbank  >  Warum erhalte ich einen „SQL-Syntaxfehler', wenn ich vorbereitete Anweisungen in Python mit MySQL verwende?

Warum erhalte ich einen „SQL-Syntaxfehler', wenn ich vorbereitete Anweisungen in Python mit MySQL verwende?

DDD
DDDOriginal
2024-11-07 16:51:03860Durchsuche

Why Am I Getting a

Vorbereitete Anweisungen mit MySQL in Python verwenden: Syntax klären und Fehler vermeiden

Bei der Verwendung vorbereiteter Anweisungen mit MySQL in Python tritt ein Fehler auf Python mit der Meldung „‚Sie haben einen Fehler in Ihrer SQL-Syntax‘“. Lassen Sie uns den von Ihnen bereitgestellten Code untersuchen und das Problem identifizieren.

Der Code, den Sie zur Vorbereitung der Anweisung verwendet haben, scheint korrekt zu sein, aber die anschließende Ausführung der Anweisung enthält den Fehler. Insbesondere scheint der Code in der Schleife Parameter mit einer anderen Syntax zu verwenden, als die vorbereitete Anweisung erwartet.

sql = "EXECUTE stmt USING \'{}\', \'{}\', {}, {};".format(d, t, tag, power)

In dem in der Antwort bereitgestellten Beispiel wird ein effizienterer Ansatz unter Verwendung des MySQLdb-Moduls von Python vorgeschlagen:

sql = ('INSERT INTO {} (date, time, tag, power) VALUES '
       '(%s, %s, %s, %s)'.format(self.db_scan_table))

self.cursor.execute(sql, (d, t, tag, power))

Hier werden die Platzhalter für die Werte (%s) direkt im SQL-Abfragestring angegeben und die tatsächlichen Werte als Tupel im Ausführungsaufruf übergeben. Dadurch entfällt die Notwendigkeit einer Zeichenfolgenformatierung in der Ausführungsphase, die wahrscheinlich den Syntaxfehler in Ihrem Code verursacht hat.

Alternativ können Sie MySQLs eigenen Connector/Python mit der Option „prepare=True“ im Cursor() verwenden. Factory, was effizienter und expliziter ist als die Verwendung der PREPARE- und EXECUTE-Anweisungen.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich einen „SQL-Syntaxfehler', wenn ich vorbereitete Anweisungen in Python mit MySQL verwende?. 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