如何使用字符串(从字典转换而来)更新 PostgreSQL 中的列?
How to update a column in PostgreSQL with a string (converted from dictionary)?
我有一个字符串 obj(obj),它是从字典转换而来的:
obj = '{"a":1, "b":[{"c":2, "d":3}, {"e":5,"f":6}]}'
我想用该字符串更新数据库中的列。我试过了:
Cursor.execute("update table emp set column1 = obj")
但我收到一个错误:
Psycopg2 programming error.
问题是您的 execute()
调用等同于在 PostgreSQL 控制台 (psql
) 键入 update table emp set column1 = obj
。也就是说,您要告诉 PostgreSQL:对于 emp
table 的每一行,用名为 obj
.[=24 的列的内容覆盖名为 column1
的列=]
这可能不是您的本意。事实上,您的 emp
table 可能甚至没有名为 obj
的列,这就是您收到错误的原因。
你想做的是发出 parameterized query:
Cursor.execute("update table emp set column1 = %(obj)s",
{'obj': obj})
警告:这会覆盖 table 中每一行的 column1
。确保您的 UPDATE
还包括一个 WHERE
子句,如果这是您的意图的话。像这样:
Cursor.execute("update table emp set column1 = %(obj)s where id = %(obj_id)s",
{'obj': obj, 'obj_id': n})
我有一个字符串 obj(obj),它是从字典转换而来的:
obj = '{"a":1, "b":[{"c":2, "d":3}, {"e":5,"f":6}]}'
我想用该字符串更新数据库中的列。我试过了:
Cursor.execute("update table emp set column1 = obj")
但我收到一个错误:
Psycopg2 programming error.
问题是您的 execute()
调用等同于在 PostgreSQL 控制台 (psql
) 键入 update table emp set column1 = obj
。也就是说,您要告诉 PostgreSQL:对于 emp
table 的每一行,用名为 obj
.[=24 的列的内容覆盖名为 column1
的列=]
这可能不是您的本意。事实上,您的 emp
table 可能甚至没有名为 obj
的列,这就是您收到错误的原因。
你想做的是发出 parameterized query:
Cursor.execute("update table emp set column1 = %(obj)s",
{'obj': obj})
警告:这会覆盖 table 中每一行的 column1
。确保您的 UPDATE
还包括一个 WHERE
子句,如果这是您的意图的话。像这样:
Cursor.execute("update table emp set column1 = %(obj)s where id = %(obj_id)s",
{'obj': obj, 'obj_id': n})