Le stockage des requêtes SQL dans des variables améliore la flexibilité et la lisibilité du code. Cet article explique comment exploiter les variables pour exécuter efficacement des requêtes SQL paramétrées en Python.
Les requêtes SQL paramétrées empêchent l'injection SQL en séparant les instructions SQL des données variables. En Python, cela est réalisé grâce à la méthode cursor.execute()
, où l'espace réservé (%s) représente la variable.
Pour stocker la requête SQL dans une variable, affectez-la à une variable chaîne, par exemple :
<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)"</code>
Pour effectuer une requête paramétrée avec plusieurs variables, transmettez les variables sous forme de séquence ou de carte. Cependant, la méthode execute()
attend trois paramètres et contenir une requête SQL dépasse cette limite.
Pour résoudre ce problème, les requêtes et variables SQL peuvent être divisées en variables et paramètres distincts. Une solution consiste à affecter la variable à l'élément du tuple :
<code class="language-python">sql_and_params = ("INSERT INTO table VALUES (%s, %s, %s)", var1, var2, var3)</code>
Cependant, cette méthode génère une erreur en raison du nombre de paramètres. Au lieu de cela, lorsque vous le transmettez à execute()
, le tuple doit être divisé comme suit :
<code class="language-python">cursor.execute(sql_and_params[0], sql_and_params[1:])</code>
Une approche plus lisible consiste à utiliser des variables distinctes pour la requête SQL et ses paramètres :
<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)" args = var1, var2, var3 cursor.execute(sql, args)</code>
Cette méthode fournit une séparation claire entre l'instruction SQL et ses 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!