Heim >Datenbank >MySQL-Tutorial >Wie kann ich SQL SELECT-Anweisungen in Python mit pyodbc sicher parametrisieren?

Wie kann ich SQL SELECT-Anweisungen in Python mit pyodbc sicher parametrisieren?

DDD
DDDOriginal
2025-01-03 12:58:38732Durchsuche

How to Safely Parameterize SQL SELECT Statements in Python with pyodbc?

Parametrierte Select-Anweisungen in Python mit pyodbc

Diese Frage beschreibt, wie eine SQL-SELECT-Anweisung unter Verwendung einer Variablen als Parameter in einer Schleife ausgeführt wird über eine Tabelle namens „Throughput“. Der spezifische verwendete Parameter variiert je nach „DeviceName“-Attribut der Zeile.

Erste Versuche

Anfangs versuchte der Benutzer den folgenden Code erfolglos:

for row in cursor.execute("SELECT * FROM Throughput WHERE DeviceName=%s", %(data['DeviceName'])):

Ein weiterer erfolgloser Versuch war:

for row in cursor.execute("SELECT * FROM Throughput WHERE(DeviceName), values(?)", (data['DeviceName']) ):

Endgültiger Arbeitscode

Letztendlich hat der Benutzer das Problem mit dem folgenden Snippet erfolgreich gelöst:

query = "SELECT * FROM Throughput WHERE DeviceName = '%s'" % data['Device Name']
try:
    for row in cursor.execute(query):

Parameterisierte Anweisungen

Der empfohlene Ansatz ist die Verwendung parametrisierter Anweisungen Anweisungen:

cursor.execute("SELECT * FROM Throughput WHERE DeviceName = ?", data['DeviceName'])

Dieser Ansatz bietet mehrere Vorteile gegenüber den vorherigen Versuchen:

  • Schutz vor SQL-Injection
  • Keine Notwendigkeit, where-Klauselwerte mit einfachen Anführungszeichen zu maskieren
  • Die SQL-Vorbereitung erfolgt nur einmal, wodurch die Leistung für nachfolgende Ausführungen verbessert wird

Das obige ist der detaillierte Inhalt vonWie kann ich SQL SELECT-Anweisungen in Python mit pyodbc sicher parametrisieren?. 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