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!