我有一个字符串obj(obj),它来自字典的转换:
obj = '{"a":1, "b":[{"c":2, "d":3}, {"e":5,"f":6}]}'
我想用该字符串更新数据库中的列。我试过了:
Cursor.execute("update table emp set column1 = obj")
但是我收到了一个错误:
Psycopg2编程错误。
答案 0 :(得分:0)
问题是您的execute()
调用等同于在PostgreSQL控制台(update table emp set column1 = obj
)键入psql
。也就是说,您告诉PostgreSQL:对于emp
表的每一行,使用名为column1
的列的内容覆盖名为obj
的列。
这可能不是你打算做的。实际上,您的emp
表可能甚至没有名为obj
的列,这就是您收到错误的原因。
您要做的是发出parameterized query:
Cursor.execute("update table emp set column1 = %(obj)s",
{'obj': obj})
警告:这会覆盖表中每一行的column1
。如果您有意,请确保UPDATE
还包含WHERE
条款。像这样:
Cursor.execute("update table emp set column1 = %(obj)s where id = %(obj_id)s",
{'obj': obj, 'obj_id': n})