Maison > base de données > tutoriel mysql > Comment puis-je exécuter en toute sécurité des requêtes SQL paramétrées dynamiquement en Python ?

Comment puis-je exécuter en toute sécurité des requêtes SQL paramétrées dynamiquement en Python ?

Susan Sarandon
Libérer: 2025-01-12 06:58:43
original
512 Les gens l'ont consulté

How Can I Safely Execute Dynamic Parameterized SQL Queries in Python?

Utiliser le paramétrage pour exécuter des requêtes SQL dynamiques en Python

En Python, les requêtes SQL paramétrées sont utilisées pour empêcher les vulnérabilités d'injection SQL. L'approche recommandée consiste à utiliser la méthode cursor.execute(), en transmettant la requête et les paramètres séparément. Cependant, vous souhaitez parfois stocker une requête dans une variable pour une exécution ultérieure.

Requêtes utilisant des variables paramétrées

Pour exécuter une requête SQL paramétrée à l'aide de variables, nous devons déballer les variables dans l'appel cursor.execute(). cursor.execute() La méthode accepte jusqu'à trois paramètres : une requête, des paramètres facultatifs et un dictionnaire facultatif de paramètres nommés.

Utilisez * (astérisque) pour décompresser les variables

Une solution consiste à décompresser la variable à l'aide de l'opérateur astérisque (*), qui développe un tuple en un seul argument. Cependant, cela nous oblige à diviser la requête et les paramètres en deux listes ou tuples distincts.

sql_and_params = ("INSERT INTO table VALUES (%s, %s, %s)", var1, var2, var3)
cursor.execute(*sql_and_params)
Copier après la connexion

Décompresser manuellement les variables

Alternativement, nous pouvons décompresser manuellement les variables dans les paramètres corrects. Cela nous permet d'utiliser une seule variable pour la requête et les paramètres.

sql = "INSERT INTO table VALUES (%s, %s, %s)"
args = (var1, var2, var3)
cursor.execute(sql, args)
Copier après la connexion

Avantages des variables explicites

L'utilisation de variables distinctes pour les requêtes et les paramètres rend le code plus lisible et plus facile à maintenir. Cela nous permet également de modifier facilement la requête ou les paramètres au moment de l'exécution sans avoir à recréer les variables.

Ainsi, même s'il est possible de stocker des requêtes SQL paramétrées dans des variables, il est généralement préférable de séparer la requête et les paramètres en variables explicites pour améliorer la lisibilité et la flexibilité.

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 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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal