Maison >base de données >tutoriel mysql >Comment exécuter une requête SQL paramétrée stockée dans une variable en Python ?

Comment exécuter une requête SQL paramétrée stockée dans une variable en Python ?

DDD
DDDoriginal
2025-01-12 06:49:43938parcourir

How to Execute a Parameterized SQL Query Stored in a Variable in Python?

Exécuter des requêtes SQL paramétrées stockées dans des variables en Python

Lorsque vous traitez des requêtes SQL en Python, il est crucial d'utiliser des requêtes paramétrées pour empêcher l'injection SQL. Cela implique de remplacer les espaces réservés aux paramètres (par exemple, « %s ») par des variables contenant des valeurs réelles.

Une question courante est de savoir s'il est possible de stocker une requête SQL paramétrée dans une variable puis de l'exécuter. Explorons la syntaxe et comment y parvenir.

Question

Considérez le code Python suivant :

<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)", var1, var2, var3
cursor.execute(sql)</code>

Malheureusement, ce code génère une erreur car cursor.execute() accepte jusqu'à trois paramètres : la chaîne de requête et les paramètres facultatifs. Dans cet exemple, nous avons quatre paramètres, représentés par le tuple (sql, var1, var2, var3).

Solution

Il existe deux manières d'exécuter des requêtes SQL paramétrées à partir de variables :

Méthode 1 : Développer les paramètres

Nous pouvons étendre les paramètres du tuple contenant la requête et les paramètres en cursor.execute() :

<code class="language-python">sql_and_params = "INSERT INTO table VALUES (%s, %s, %s)", var1, var2, var3
cursor.execute(*sql_and_params)</code>

Cela étend le tuple à quatre paramètres, mais cela peut sembler maladroit.

Méthode 2 : requête et paramètres séparés

Pour plus de clarté, il est préférable de séparer la requête SQL et les paramètres en deux variables :

<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)"
args = (var1, var2, var3)
cursor.execute(sql, args)</code>

Cette approche est plus concise et plus facile à lire et à maintenir.

Conclusion

En résumé, lors de l'exécution d'une requête SQL paramétrée à partir de variables en Python, vous devez développer les paramètres ou séparer la requête et les paramètres en différentes variables. La deuxième méthode est généralement recommandée car elle est plus simple et plus directe.

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