我正在使用PostgreSQL v9.4.12而我正在尝试更新jsonb列。我想更新整个json对象而不是对象的特定键。
我正在使用Python dict
来存储我的对象,在使用之前我使用json.dumps()
将其转换为json格式的String。
但是,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“,”short_description“:”此属性的价格 是...
^
我假设json.dumps()
逃脱了单引号,但似乎并非如此。有没有解决方案来克服这个错误?
提前致谢。
答案 0 :(得分:3)
{{1}}
所以我假设您可以尝试使用美元符号引号,以避免语句结构化带有单引号的异常
答案 1 :(得分:2)
字符串连接的做法不是一个好习惯。
更好地使用documented in PsyCoPg2 docs的方式。
cur.execute( "UPDATE table SET jsonb_column = %s WHERE id = %s", [ json, id ] )