Maison >base de données >tutoriel mysql >Comment paramétrer en toute sécurité les instructions SQL SELECT en Python avec pyodbc ?

Comment paramétrer en toute sécurité les instructions SQL SELECT en Python avec pyodbc ?

DDD
DDDoriginal
2025-01-03 12:58:38671parcourir

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

Instructions Select paramétrées en Python utilisant pyodbc

Cette question explique comment exécuter une instruction SQL SELECT en utilisant une variable comme paramètre dans une boucle sur un tableau appelé « Débit ». Le paramètre spécifique utilisé varie en fonction de l'attribut "DeviceName" de la ligne.

Tentatives initiales

Initialement, l'utilisateur a tenté le code suivant sans succès :

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

Une autre tentative infructueuse a été :

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

Travail final Code

En fin de compte, l'utilisateur a réussi à résoudre le problème avec l'extrait suivant :

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

Déclarations paramétrées

L'approche recommandée est d'utiliser des instructions paramétrées :

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

Cette approche offre plusieurs avantages par rapport à la précédente tentatives :

  • Protection contre l'injection SQL
  • Pas besoin d'échapper aux valeurs de la clause Where avec des guillemets simples
  • La préparation SQL n'a lieu qu'une seule fois, améliorant les performances pour les exécutions ultérieures

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn