代码之家  ›  专栏  ›  技术社区  ›  Alex

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

  •  0
  • Alex  · 技术社区  · 7 年前

    我试图更新一个表的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 回复  |  直到 7 年前
        1
  •  7
  •   sushain97    7 年前

    使用参数化查询。永远不要直接将用户输入插入到SQL查询中,这会使您面临SQL注入攻击。

    像这样:

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

    以下是一些有用的 docs 关于这个话题。