112 votes

Comment utiliser des variables dans une instruction SQL dans Python ?

J'ai le code Python suivant :

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

var1 est un entier, var2 var3 sont des chaînes de caractères.

Comment puis-je écrire les noms des variables sans Python en les incluant dans le texte de la requête ?

136voto

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

Notez que les paramètres sont transmis sous forme de tuple.

L'API de base de données exécute correctement l'échappement et la citation des variables. Veillez à ne pas utiliser l'opérateur de formatage de chaîne (%), car

  1. il ne fait pas d'échappatoires ou de citations.
  2. il est sujet à des attaques au format de chaîne non contrôlé, par exemple l'injection SQL.

27voto

Numlock Points 91

http://www.amk.ca/python/writing/DB-API.html

Soyez prudent lorsque vous ajoutez simplement des valeurs de variables à vos instructions : Imaginez qu'un utilisateur se nomme ';DROP TABLE Users;' -- C'est pourquoi vous devez utiliser l'échappement SQL, que Python vous fournit lorsque vous utilisez cursor.execute de manière décente. Exemple dans l'URL :

cursor.execute("insert into Attendees values (?, ?, ?)", (name, seminar, paid))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X