Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie verwende ich vorbereitete Anweisungen mit MySQL in Python?

Barbara Streisand
Freigeben: 2024-11-08 07:48:01
Original
277 Leute haben es durchsucht

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)
Nach dem Login kopieren

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))
Nach dem Login kopieren

Diese Zeile erstellt eine SQL-Zeichenfolge mit Platzhaltern ("?"-Zeichen) für die einzufügenden Werte.

self.cursor.execute(sql, (d, t, tag, power))
Nach dem Login kopieren

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))
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage