Heim >Datenbank >MySQL-Tutorial >Kann ich parametrisierte SQL-Abfragen ausführen, die in einer Variablen in Python gespeichert sind?

Kann ich parametrisierte SQL-Abfragen ausführen, die in einer Variablen in Python gespeichert sind?

Susan Sarandon
Susan SarandonOriginal
2025-01-12 08:32:42537Durchsuche

Can I Execute Parameterized SQL Queries Stored in a Variable in Python?

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!

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