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
Libérer: 2025-01-03 12:58:38
original
669 Les gens l'ont consulté

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'])):
Copier après la connexion

Une autre tentative infructueuse a été :

for row in cursor.execute("SELECT * FROM Throughput WHERE(DeviceName), values(?)", (data['DeviceName']) ):
Copier après la connexion

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):
Copier après la connexion

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'])
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal