Heim  >  Artikel  >  Datenbank  >  Wie verwende ich vorbereitete Anweisungen mit MySQL in Python?

Wie verwende ich vorbereitete Anweisungen mit MySQL in Python?

Barbara Streisand
Barbara StreisandOriginal
2024-11-08 07:48:01216Durchsuche

How to Use Prepared Statements with MySQL in Python?

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!

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