psycopg2 - 更新Json列时如何转义单引号?

时间:2018-05-01 20:46:54

标签: python sql postgresql psycopg2

我正在尝试更新表的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)

注意:我正在使用缺少json函数支持的postgreSQL 9.2所以我必须在python中执行此操作

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

使用参数化查询。永远不要直接将用户输入插入到SQL查询中,它会让您暴露于SQL注入攻击。

像这样:

> df
  name Year price size performance
1    A 2001     1    1           1
2    A 2002     2    2           2
3    A 2003     3    3           3
4    B 2001     2    2           2
5    B 2002     3    3           3
6    B 2003     4    4           4
7    C 2001     3    3           3
8    C 2002     4    4           4
9    C 2003     5    5           5

以下是关于此主题的一些有用的docs