Utiliser le paramétrage pour exécuter des requêtes SQL dynamiques en Python
En Python, les requêtes SQL paramétrées sont utilisées pour empêcher les vulnérabilités d'injection SQL. L'approche recommandée consiste à utiliser la méthode cursor.execute()
, en transmettant la requête et les paramètres séparément. Cependant, vous souhaitez parfois stocker une requête dans une variable pour une exécution ultérieure.
Requêtes utilisant des variables paramétrées
Pour exécuter une requête SQL paramétrée à l'aide de variables, nous devons déballer les variables dans l'appel cursor.execute()
. cursor.execute()
La méthode accepte jusqu'à trois paramètres : une requête, des paramètres facultatifs et un dictionnaire facultatif de paramètres nommés.
Utilisez * (astérisque) pour décompresser les variables
Une solution consiste à décompresser la variable à l'aide de l'opérateur astérisque (*), qui développe un tuple en un seul argument. Cependant, cela nous oblige à diviser la requête et les paramètres en deux listes ou tuples distincts.
sql_and_params = ("INSERT INTO table VALUES (%s, %s, %s)", var1, var2, var3) cursor.execute(*sql_and_params)
Décompresser manuellement les variables
Alternativement, nous pouvons décompresser manuellement les variables dans les paramètres corrects. Cela nous permet d'utiliser une seule variable pour la requête et les paramètres.
sql = "INSERT INTO table VALUES (%s, %s, %s)" args = (var1, var2, var3) cursor.execute(sql, args)
Avantages des variables explicites
L'utilisation de variables distinctes pour les requêtes et les paramètres rend le code plus lisible et plus facile à maintenir. Cela nous permet également de modifier facilement la requête ou les paramètres au moment de l'exécution sans avoir à recréer les variables.
Ainsi, même s'il est possible de stocker des requêtes SQL paramétrées dans des variables, il est généralement préférable de séparer la requête et les paramètres en variables explicites pour améliorer la lisibilité et la flexibilité.
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!