psycopg2 - как избежать одиночной кавычки при обновлении столбца Json? - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь обновить столбец json таблицы, но застрял, потому что одно из значений в json содержит одинарную кавычку.

моя строка JSON выглядит следующим образом

{"keyword": "women's shoes"}

Вот мой код.

criteria_str = json.dumps(criteria)
sql_str = """update user_saved_search_backup set criteria = '%s'::json where id = %d;""" % (criteria_str, id)                    
write_cursor.execute(sql_str)

ПРИМЕЧАНИЕ: я использую postgreSQL 9.2, в котором отсутствует поддержка функции json, поэтому мне пришлось сделать это в python

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 01 мая 2018

Использовать параметризованный запрос. Никогда напрямую не вставляйте пользовательский ввод в ваши SQL-запросы, это подвергает вас атакам SQL-инъекций.

Как это:

sql_str = """update user_saved_search_backup set criteria = %s::json where id = %s;"""
write_cursor.execute(sql_str, (criteria_str, id))

Вот несколько полезных документов на эту тему.

...