Forum Programmation.python sqlite et caractères spéciaux

Posté par (page perso) .
Tags : aucun
0
7
juin
2008
Salut,

comment 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
  • # Syntaxe à-la-printf

    Posté par . Évalué à 3.

    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 !

    Posté par (page perso) . Évalué à 5.

    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.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.