Comment citer une valeur de chaîne de façon explicite (Python DB API/Psycopg2)

Pour certaines raisons, je souhaiterais faire un explicite, citant une chaîne de valeur (de devenir une partie de construit la requête SQL), au lieu d'attendre implicite devis effectué par cursor.execute méthode que sur le contenu de son deuxième paramètre.

Par "implicite citation" je veux dire:

value = "Unsafe string"
query = "SELECT * FROM some_table WHERE some_char_field = %s;"
cursor.execute( query, (value,) ) # value will be correctly quoted

Je préfère quelque chose comme ça:

value = "Unsafe string"
query = "SELECT * FROM some_table WHERE some_char_field = %s;" % \
    READY_TO_USE_QUOTING_FUNCTION(value)
cursor.execute( query ) # value will be correctly quoted, too

Est si bas niveau READY_TO_USE_QUOTING_FUNCTION prévu par Python DB spécification de l'API (je ne pouvais pas trouver une telle fonctionnalité dans PEP 249 document). Si non, peut-être Psycopg2 fournit une telle fonction? Si non, peut-être que Django fournit une telle fonction? Je préfère ne pas écrire une telle fonction de moi-même...

  • Je vous suggère de chercher dans SQLAlchemy du générateur SQL API, même si vous n'êtes pas intéressé par l'ORM composants; cela vous permettra de lier les valeurs, tout en conservant la flexibilité.
  • Quelque chose comme db_cur.execute('''UPDATE test_table SET field_1="%s" WHERE field_2="%s"''' % (data, condition)) Note le triple des apostrophes et des guillemets autour de %s