Maison > base de données > tutoriel mysql > Comment puis-je utiliser en toute sécurité des variables dans les requêtes SQL avec la fonction « cursor.execute() » de Python ?

Comment puis-je utiliser en toute sécurité des variables dans les requêtes SQL avec la fonction « cursor.execute() » de Python ?

Linda Hamilton
Libérer: 2025-01-12 08:20:43
original
183 Les gens l'ont consulté

How Can I Safely Use Variables in SQL Queries with Python's `cursor.execute()` Function?

Utilisation de variables en Python pour les requêtes SQL paramétrées

En Python, les requêtes SQL paramétrées sont cruciales pour empêcher l'injection SQL. Bien que l'approche recommandée consiste à transmettre les variables directement à la fonction d'exécution, dans certains cas, il est également souhaitable d'utiliser des variables pour représenter la requête elle-même.

Requête en tant que variable : erreur de syntaxe

Essayer d'exécuter une requête SQL directement à partir d'une variable (comme indiqué ci-dessous) entraîne une erreur de syntaxe :

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

Exécuter la fonction

cursor.executeLa signature de la fonction précise qu'elle accepte jusqu'à trois paramètres :

<code>cursor.execute(self, query, args=None)</code>
Copier après la connexion

Par conséquent, il est incorrect de transmettre une variable contenant une requête et des paramètres en tant que paramètre unique.

Solution

Pour résoudre ce problème, deux solutions possibles :

Tuple développé avec des paramètres :

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

Cependant, cette approche peut provoquer des erreurs si le tuple comporte plus de trois éléments.

Requête et paramètres séparés :

Vous pouvez également séparer la requête et les paramètres :

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

Cette méthode est plus détaillée, mais garantit que le nombre correct de paramètres est transmis à la fonction d'exécution.

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
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