Beim Umgang mit SQL-Abfragen in Python ist es wichtig, parametrisierte Abfragen zu verwenden, um SQL-Injection zu verhindern. Dabei werden Parameterplatzhalter (z. B. „%s“) durch Variablen ersetzt, die tatsächliche Werte enthalten.
Eine häufig gestellte Frage ist, ob es möglich ist, eine parametrisierte SQL-Abfrage in einer Variablen zu speichern und diese dann auszuführen. Lassen Sie uns die Syntax untersuchen und wie Sie dies erreichen.
Betrachten Sie den folgenden Python-Code:
<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)", var1, var2, var3 cursor.execute(sql)</code>
Leider löst dieser Code einen Fehler aus, da cursor.execute()
bis zu drei Parameter akzeptiert: Abfragezeichenfolge und optionale Parameter. In diesem Beispiel haben wir vier Parameter, dargestellt durch das Tupel (sql, var1, var2, var3)
.
Es gibt zwei Möglichkeiten, parametrisierte SQL-Abfragen von Variablen auszuführen:
Methode 1: Parameter erweitern
Wir können die Parameter des Tupels, das die Abfrage und die Parameter enthält, zu cursor.execute()
erweitern:
<code class="language-python">sql_and_params = "INSERT INTO table VALUES (%s, %s, %s)", var1, var2, var3 cursor.execute(*sql_and_params)</code>
Dadurch wird das Tupel auf vier Parameter erweitert, aber das mag umständlich erscheinen.
Methode 2: Abfrage und Parameter trennen
Aus Gründen der Übersichtlichkeit ist es am besten, die SQL-Abfrage und die Parameter in zwei Variablen aufzuteilen:
<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)" args = (var1, var2, var3) cursor.execute(sql, args)</code>
Dieser Ansatz ist prägnanter und einfacher zu lesen und zu pflegen.
Zusammenfassend lässt sich sagen, dass Sie beim Ausführen einer parametrisierten SQL-Abfrage aus Variablen in Python die Parameter erweitern oder die Abfrage und Parameter in verschiedene Variablen aufteilen müssen. Die zweite Methode wird normalerweise empfohlen, da sie einfacher und unkomplizierter ist.
Das obige ist der detaillierte Inhalt vonWie führe ich eine parametrisierte SQL-Abfrage aus, die in einer Variablen in Python gespeichert ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!