Retourner aux forums || Retourner au forum Programmation.python
Programmation.python : sqlite et caractères spéciaux
Posté par elloco (page perso, ) le 07 juin 2008comment faut-il échapper les caractères ' dans une requête sql ?
exemple
cur.execute("Insert INTO Albums (url, date) VALUES ('/" + dirname + "', '" + curdate + "')");
le dirname pose problème.
si je fait un replace("'", "''") ça marche pas
si je fait un replace("'", "\'") ça marche pas
autre idée ?
merci
> Lire le message (2 commentaires, moyenne: 4).
Syntaxe à-la-printf
Salut,
ma_chaine.replace("'","''") fait très bien le travail souhaité.
Une remarque quant à la manière de faire ta requête.
La concaténation des bouts de chaine rend la requête pénible à lire.
Utilise plutôt la syntaxe à la printf. ta ligne devient alors:
cur.execute("INSERT INTO Albums (url, date) VALUES ('/%s', '%s')" % (dirname, curdate))
En outre, en python il n'y a pas besoin de mettre le point-virgule à la fin de la ligne. ;)
À éviter absolument !
Python offre tout ce qu'il faut pour faire l'échappement des caractères dans les requêtes SQL, Pourquoi ne pas en tirer parti ?
Le lien vers la documentation [http://docs.python.org/lib/module-sqlite3.html] nous apprend que ce que tu cherches à faire doit être réalisé de la façon suivante (pour du sqlite) :
cur.execute("Insert INTO Albums (url, date) VALUES (?, ?)", (dirname, curdate))
Dans ce cas, même si ton paramètre est vraiment tordu, c'est le module qui se charge de tout.
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.python



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.