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>
Funktion ausführen
cursor.execute
Die Signatur der Funktion gibt an, dass sie bis zu drei Parameter akzeptiert:
<code>cursor.execute(self, query, args=None)</code>
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>
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>
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!