По каким-то причинам я хотел бы сделать явное цитирование строкового значения (став частью построенного SQL-запроса), а не ждать неявной цитаты, выполняемой методом cursor.execute
по содержимому его второго параметра.
Под "неявной цитатой" я имею в виду:
value = "Unsafe string"
query = "SELECT * FROM some_table WHERE some_char_field = %s;"
cursor.execute( query, (value,) ) # value will be correctly quoted
Я бы предпочел что-то вроде этого:
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
Является ли такой низкий уровень READY_TO_USE_QUOTING_FUNCTION
ожидаемым по спецификации API Python DB (я не мог найти такую функциональность в PEP 249 document). Если нет, возможно, Psycopg2 предоставляет такую функцию? Если нет, возможно, Django предоставляет такую функцию? Я бы предпочел не писать такую функцию сам...