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
Libérer: 2025-01-12 08:32:42
original
573 Les gens l'ont consulté

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

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

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

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

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

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!

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