Heim >Datenbank >MySQL-Tutorial >So verwenden Sie vorbereitete Anweisungen mit MySQL in Python: Ein Leitfaden zur Vermeidung von Syntaxfehlern und zur Optimierung der Leistung

So verwenden Sie vorbereitete Anweisungen mit MySQL in Python: Ein Leitfaden zur Vermeidung von Syntaxfehlern und zur Optimierung der Leistung

Patricia Arquette
Patricia ArquetteOriginal
2024-11-08 04:22:02412Durchsuche

How to Use Prepared Statements with MySQL in Python: A Guide for Avoiding Syntax Errors and Optimizing Performance

Verwenden vorbereiteter Anweisungen mit MySQL in Python

Beim Versuch, SQL mit vorbereiteten Anweisungen in Python über die direkte SQL-Verwendung zu verwenden, können bei Benutzern Fehler auftreten wie zum Beispiel „Sie haben einen Fehler in Ihrer SQL-Syntax“. Dies kann auftreten, wenn Anweisungen wie folgt ausgeführt werden:

sql = "PREPARE stmt FROM ' INSERT INTO {} (date, time, tag, power) VALUES (?, ?, ?, ?)'".format(self.db_scan_table)
self.cursor.execute(sql)

gefolgt von:

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

Um dieses Problem zu lösen, ist es wichtig zu verstehen, dass Python über keinen intrinsischen Mechanismus für vorbereitete Anweisungen verfügt. Stattdessen kann man die Methode „execute()“ des Cursorobjekts nutzen, um Anweisungen dynamisch vorzubereiten und auszuführen.

Zum Beispiel:

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))

Dieser Ansatz verringert die Notwendigkeit einer zusätzlichen Zeichenfolgenformatierung, z Das MySQLdb-Modul übernimmt die Vorbereitung und Ausführung von Anweisungen automatisch.

Darüber hinaus ist zu bedenken, dass, wenn die erwähnte Schleife nur das Einfügen von Daten beinhaltet, ein einziger Aufruf von .execute_many() mit einer Folge von Tupeln als Zweiter erforderlich ist Das Argument könnte die gesamte Schleife ersetzen und so die Effizienz steigern.

Darüber hinaus bietet der Connector/Python von MySQL mit seiner Option „prepare=True“ in .cursor() eine überlegene Alternative. Dies ermöglicht die explizite Vorbereitung von Anweisungen (unter Verwendung des effizienten Binärprotokolls) und ermöglicht gleichzeitig die Verwendung eines anderen Cursors für Anweisungen, die besser unvorbereitet bleiben.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie vorbereitete Anweisungen mit MySQL in Python: Ein Leitfaden zur Vermeidung von Syntaxfehlern und zur Optimierung der Leistung. 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