Verwenden der Parametrisierung zum Ausführen dynamischer SQL-Abfragen in Python
In Python werden parametrisierte SQL-Abfragen verwendet, um SQL-Injection-Schwachstellen zu verhindern. Der empfohlene Ansatz besteht darin, die Methode cursor.execute()
zu verwenden und dabei die Abfrage und die Parameter getrennt zu übergeben. Manchmal möchten Sie jedoch eine Abfrage zur späteren Ausführung in einer Variablen speichern.
Abfragen mit parametrisierten Variablen
Um eine parametrisierte SQL-Abfrage mit Variablen auszuführen, müssen wir die Variablen in den cursor.execute()
-Aufruf entpacken. cursor.execute()
Die Methode akzeptiert bis zu drei Parameter: Abfrage, optionale Parameter und ein optionales Wörterbuch benannter Parameter.
Verwenden Sie * (Sternchen), um Variablen zu entpacken
Eine Möglichkeit besteht darin, die Variable mit dem Sternchen (*)-Operator zu entpacken, der ein Tupel in ein einzelnes Argument erweitert. Dies erfordert jedoch, dass wir die Abfrage und die Parameter in zwei separate Listen oder Tupel aufteilen.
<code class="language-python">sql_and_params = ("INSERT INTO table VALUES (%s, %s, %s)", var1, var2, var3) cursor.execute(*sql_and_params)</code>
Variablen manuell entpacken
Alternativ können wir die Variablen manuell in die richtigen Parameter entpacken. Dadurch können wir eine einzige Variable für die Abfrage und die Parameter verwenden.
<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)" args = (var1, var2, var3) cursor.execute(sql, args)</code>
Vorteile expliziter Variablen
Die Verwendung separater Variablen für Abfragen und Parameter macht den Code lesbarer und einfacher zu warten. Außerdem können wir die Abfrage oder Parameter zur Laufzeit einfach ändern, ohne die Variablen neu erstellen zu müssen.
Obwohl es möglich ist, parametrisierte SQL-Abfragen in Variablen zu speichern, wird es im Allgemeinen bevorzugt, die Abfrage und die Parameter in explizite Variablen aufzuteilen, um die Lesbarkeit und Flexibilität zu verbessern.
Das obige ist der detaillierte Inhalt vonWie kann ich dynamisch parametrisierte SQL-Abfragen in Python sicher ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!