Verwendung vorbereiteter Anweisungen mit MySQL in Python: Eine detaillierte Erklärung
Verstehen der Syntax
Vorbereitete Anweisungen in MySQL bieten eine effizientere und sicherere Möglichkeit, Abfragen auszuführen, indem sie die Abfragevorbereitungsphase von der Ausführungsphase trennen. Bei der Verwendung vorbereiteter Anweisungen ist es wichtig, die richtige Syntax einzuhalten, um potenzielle Fehler zu vermeiden.
Erklärung des Fehlers
In Ihrem Codeausschnitt tritt ein Fehler auf, weil Sie ihn verwenden die falsche Syntax für vorbereitete Anweisungen. Hier ist eine Aufschlüsselung des Problems:
sql = "PREPARE stmt FROM ' INSERT INTO {} (date, time, tag, power) VALUES (?, ?, ?, ?)'".format(self.db_scan_table) self.cursor.execute(sql)
Diese Zeile versucht, eine Anweisung namens „stmt“ mithilfe einer SQL-Zeichenfolge vorzubereiten. Allerdings unterstützt das MySQLdb-Modul von Python die Befehle „PREPARE“ und „EXECUTE“ nicht direkt.
Lösung mit MySQLdb
Um vorbereitete Anweisungen mit MySQLdb zu verwenden, benötigen Sie um einen etwas anderen Ansatz zu verwenden:
sql = ('INSERT INTO {} (date, time, tag, power) VALUES (%s, %s, %s, %s)'.format(self.db_scan_table))
Diese Zeile erstellt eine SQL-Zeichenfolge mit Platzhaltern ("?"-Zeichen) für die einzufügenden Werte.
self.cursor.execute(sql, (d, t, tag, power))
Diese Zeile führt die aus vorbereitete Anweisung unter Verwendung der angegebenen Werte im Tupel. MySQLdb bereitet die Anweisung automatisch vor und übernimmt die Ausführung.
Verwendung von MySQL Connector/Python
Eine modernere und effizientere Möglichkeit, vorbereitete Anweisungen mit MySQL in Python zu verwenden, ist die Verwendung von MySQL-Connector/Python. Es bietet eine explizite Option „prepare=True“ in der Cursor-Factory:
cursor = conn.cursor(prepared=True) sql = ('INSERT INTO {} (date, time, tag, power) VALUES (%s, %s, %s, %s)'.format(self.db_scan_table)) cursor.execute(sql, (d, t, tag, power))
Dieser Ansatz bietet eine bessere Kontrolle über vorbereitete Anweisungen und wird für eine verbesserte Leistung und Sicherheit empfohlen.
Das obige ist der detaillierte Inhalt vonWie verwende ich vorbereitete Anweisungen mit MySQL in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!