Comment utiliser des variables dans les instructions SQL en Python ?
P粉200138510
P粉200138510 2023-08-20 17:35:10
0
2
522
<p>J'ai le code Python suivant : </p> <pre class="brush:py;toolbar:false;">cursor.execute("INSERT INTO table VALUES var1, var2, var3,") ≪/pré> <p>Où <code>var1</code> est un entier, <code>var2</code> et <code>var3</code> </p> <p>Comment écrire des noms de variables en Python sans qu'ils soient inclus dans le texte de la requête ? </p>
P粉200138510
P粉200138510

répondre à tous(2)
P粉545682500

Différentes implémentations de Python DB-API autorisent différents espaces réservés, vous devez donc savoir lequel vous utilisez -- par exemple (en utilisant MySQLdb) :

cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", (var1, var2, var3))

Ou (en utilisant sqlite3 de la bibliothèque standard Python) :

cursor.execute("INSERT INTO table VALUES (?, ?, ?)", (var1, var2, var3))

ou autre chose (dans VALUES之后你可以有(:1, :2, :3),或者"命名样式"(:fee, :fie, :fo)或者(%(fee)s, %(fie)s, %(fo)s),在execute的第二个参数中传递一个字典而不是一个映射)。检查你正在使用的DB API模块中的paramstylestring constantes, et recherchez paramstyle sur http://www.python.org/dev/peps/pep-0249/ pour tous les styles de passage de paramètres !

P粉926174288
cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", (var1, var2, var3))

Notez que l'argument est passé sous forme de tuple, (a, b, c)。如果你只传递一个参数,元组需要以逗号结尾,(a,).

L'API de la base de données échappera et citera correctement les variables. Veuillez faire attention à ne pas utiliser d'opérateurs de formatage de chaîne (%) car

  1. Il ne permet ni évasion ni citation.
  2. Il est vulnérable aux attaques de formatage de chaîne incontrôlables telles que injection SQL.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal