Heim >Datenbank >MySQL-Tutorial >Kann ich parametrisierte SQL-Abfragen ausführen, die in einer Variablen in Python gespeichert sind?
Führen Sie parametrisierte SQL-Abfragen aus Variablen in Python aus
Um SQL-Injection zu verhindern, wird bei der Ausführung parametrisierter SQL-Abfragen in Python generell die Verwendung des folgenden Formats empfohlen:
<code class="language-python">cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", var1, var2, var3)</code>
Allerdings lohnt es sich, der Frage nachzugehen, ob es möglich ist, die Abfrage in einer Variablen zu speichern und später auszuführen.
execute()
Methodensignatur
Um zu verstehen, warum dies möglicherweise nicht funktioniert, müssen wir die Signatur der execute()
-Methode überprüfen:
<code class="language-python">cursor.execute(self, query, args=None)</code>
Diese Methode erfordert bis zu drei Parameter: eine Abfrage und eine optionale Parametersequenz oder -zuordnung.
Versuchen Sie, die Abfrage aus der Variablen auszuführen
Wenn wir versuchen, eine in der Variablen sql
gespeicherte Abfrage auszuführen, zum Beispiel:
<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)" cursor.execute(sql)</code>
Wir erhalten eine Fehlermeldung, da sql
vier Parameter enthält, einschließlich der Variablen selbst.
Getrennte Abfragen und Parameter
Um eine Abfrage von einer Variablen auszuführen, können wir die Abfrage und die Parameter trennen:
<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)" args = var1, var2, var3 cursor.execute(sql, args)</code>
In diesem Fall enthält sql
die Abfrage und args
die Parameter. Durch die Angabe von execute(sql, args)
können wir die parametrisierte Abfrage erfolgreich ausführen.
Anders
Alternativ können wir den intuitiveren Zwei-Variablen-Ansatz verwenden:
<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)" cursor.execute(sql, (var1, var2, var3))</code>
Dieser Ansatz macht die Erstellung separater Variablen für Abfragen und Parameter überflüssig.
Das obige ist der detaillierte Inhalt vonKann ich parametrisierte SQL-Abfragen ausführen, die in einer Variablen in Python gespeichert sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!