Maison >base de données >tutoriel mysql >Puis-je exécuter des requêtes SQL paramétrées stockées dans une variable en Python ?

Puis-je exécuter des requêtes SQL paramétrées stockées dans une variable en Python ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-12 08:32:42536parcourir

Can I Execute Parameterized SQL Queries Stored in a Variable in Python?

Exécuter des requêtes SQL paramétrées à partir de variables en Python

Pour éviter l'injection SQL, lors de l'exécution de requêtes SQL paramétrées en Python, il est généralement recommandé d'utiliser le format suivant :

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

Cependant, il convient d'explorer la question de savoir s'il est possible de stocker la requête dans une variable et de l'exécuter plus tard.

execute() Signature de la méthode

Pour comprendre pourquoi cela pourrait ne pas fonctionner, nous devons vérifier la signature de la execute() méthode :

<code class="language-python">cursor.execute(self, query, args=None)</code>

Cette méthode nécessite jusqu'à trois paramètres : une requête et une séquence ou une carte de paramètres facultative.

Essayez d'exécuter une requête à partir d'une variable

Si nous essayons d'exécuter une requête stockée dans la variable sql, par exemple :

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

Nous obtiendrons une erreur car sql contient quatre paramètres, dont la variable elle-même.

Requêtes et paramètres séparés

Pour exécuter une requête à partir d'une variable, on peut séparer la requête et les paramètres :

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

Dans ce cas, sql contient la requête et args contient les paramètres. En spécifiant execute(sql, args), nous pouvons exécuter avec succès la requête paramétrée.

Une autre façon

Alternativement, nous pouvons utiliser l'approche plus intuitive à deux variables :

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

Cette approche élimine le besoin de créer des variables distinctes pour les requêtes et les paramètres.

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