Python 使用包含单引号的json更新PostgreSQL中的jsonb字段

Python 使用包含单引号的json更新PostgreSQL中的jsonb字段,python,python-3.x,postgresql,postgresql-9.3,jsonb,Python,Python 3.x,Postgresql,Postgresql 9.3,Jsonb,我正在使用PostgreSQL v9.4.12,并尝试更新jsonb列。我想更新整个json对象,而不是对象的特定键 我使用Pythondict存储我的对象,在使用它之前,我使用json.dumps()将其转换为json格式的字符串。 然而,json的一个值有一个单引号”,它在尝试更新时抛出一个psycopg2.ProgrammingError:syntax error 到目前为止,我已经尝试: "UPDATE table " "SET jsonb_column='{} ".format(jso

我正在使用PostgreSQL v9.4.12,并尝试更新jsonb列。我想更新整个json对象,而不是对象的特定键

我使用Python
dict
存储我的对象,在使用它之前,我使用
json.dumps()
将其转换为json格式的字符串。 然而,json的一个值有一个单引号
,它在尝试更新时抛出一个
psycopg2.ProgrammingError:syntax error

到目前为止,我已经尝试:

"UPDATE table "
"SET jsonb_column='{} ".format(json.dumps(new_data)) + ""
"WHERE id='12345'"
请注意,
new_data
是我的dict,
jsonb_column
是保存json数据的列的名称

我得到的错误是:

psycopg2.ProgrammingError:在“s”处或附近出现语法错误

第1行:…代码“:”BR3“,”简短描述“:”该物业的价格 是

                                                  ^
我假设
json.dumps()
转义单引号,但情况似乎并非如此。有什么办法可以克服这个错误吗


提前感谢。

json单引号非常好,例如:

t=# select $${"short_description": "This property's price is..."}$$::jsonb;
                        jsonb
------------------------------------------------------
 {"short_description": "This property's price is..."}
(1 row)

因此,我假设您可以尝试使用美元符号引号,以避免单引号的语句结构异常。字符串串联的做法不是一种好的做法

最好用这种方式


jsonb?。。9.3?.. 真的吗?哎呀!我使用的是9.4.12。字符串中的“{}”是简单的位置格式hm-从未见过它-只有c样式
%s
。我不是用python编写代码的谢谢你,那正是我需要的。成功了。
cur.execute("UPDATE table SET jsonb_column = %s WHERE id = %s", [json, id])