Quand j'ai un curseur, je sais que je peux en toute sécurité exécuter une requête comme suit:Python: obtenir échappé chaîne SQL
cur.execute("SELECT * FROM foo WHERE foo.bar = %s", (important_variable,))
Est-il possible d'obtenir juste la chaîne en toute sécurité sans exécuter la requête? Par exemple, si important_variable
est une chaîne, comme "foo 'bar' \"baz"
, je veux la façon appropriée se sont échappés d'un:
"SELECT * FROM foo WHERE foo.bar = "foo \'bar\' \"baz"
(ou quel que soit le Escaping approprié est, je ne suis même pas sûr). J'utilise psycopg, et sqlobject.
Si '' important_variable' est datetime.date (2000,1,1) 'je pense que Claudiu veut une fonction qui renvoie la chaîne' "SELECT * FROM foo OU foo.bar = « 2000-1- 1 '"' – unutbu
En fait il n'y a pas d'échappement impliqué dans ce cas - le pilote envoie l'instruction paramétrée et les arguments séparément. OTOH cochez [psycopg2.extensions.QuotedString] (http://initd.org/psycopg/docs/extensions.html?highlight=escape#psycopg2.extensions.QuotedString) si vous utilisez psycopg2. –