Heim > Datenbank > MySQL-Tutorial > Wie kann ich Variablen in SQL-Abfragen mit der Python-Funktion „cursor.execute()' sicher verwenden?

Wie kann ich Variablen in SQL-Abfragen mit der Python-Funktion „cursor.execute()' sicher verwenden?

Linda Hamilton
Freigeben: 2025-01-12 08:20:43
Original
149 Leute haben es durchsucht

How Can I Safely Use Variables in SQL Queries with Python's `cursor.execute()` Function?

Variablen in Python für parametrisierte SQL-Abfragen verwenden

In Python sind parametrisierte SQL-Abfragen entscheidend, um SQL-Injection zu verhindern. Obwohl der empfohlene Ansatz darin besteht, Variablen direkt an die Ausführungsfunktion zu übergeben, ist es in manchen Fällen auch wünschenswert, Variablen zur Darstellung der Abfrage selbst zu verwenden.

Abfrage als Variable: Syntaxfehler

Der Versuch, eine SQL-Abfrage direkt aus einer Variablen auszuführen (wie unten gezeigt), führt zu einem Syntaxfehler:

<code>sql = "INSERT INTO table VALUES (%s, %s, %s)", var1, var2, var3
cursor.execute(sql)</code>
Nach dem Login kopieren

Funktion ausführen

cursor.executeDie Signatur der Funktion gibt an, dass sie bis zu drei Parameter akzeptiert:

<code>cursor.execute(self, query, args=None)</code>
Nach dem Login kopieren

Daher ist es falsch, eine Variable, die Abfrage und Parameter enthält, als einzelnen Parameter zu übergeben.

Lösung

Um dieses Problem zu lösen, gibt es zwei mögliche Lösungen:

Tupel erweitert mit Parametern:

<code>sql_and_params = "INSERT INTO table VALUES (%s, %s, %s)", var1, var2, var3
cursor.execute(*sql_and_params)</code>
Nach dem Login kopieren

Dieser Ansatz kann jedoch zu Fehlern führen, wenn das Tupel mehr als drei Elemente enthält.

Separate Abfrage und Parameter:

Alternativ können Sie die Abfrage und die Parameter trennen:

<code>sql = "INSERT INTO table VALUES (%s, %s, %s)"
args = var1, var2, var3
cursor.execute(sql, args)</code>
Nach dem Login kopieren

Diese Methode ist ausführlicher, stellt aber sicher, dass die richtige Anzahl von Parametern an die Ausführungsfunktion übergeben wird.

Das obige ist der detaillierte Inhalt vonWie kann ich Variablen in SQL-Abfragen mit der Python-Funktion „cursor.execute()' sicher verwenden?. 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