我有一本字典,代表一个表中的一行。
例如我的桌子是这样的:
CREATE TABLE test (
id char(5) CONSTRAINT firstkey PRIMARY KEY,
column1 varchar(40) NOT NULL,
column2 integer
);
我的字典像这样:
mydict = {'id':'row11', 'column1':'abcdef', 'column2':4}
现在,我正在寻找一种优雅的通用方法来使用Psycopg2更新表中的数据,类似于此处针对插入语句所描述的方法:
Insert Python Dictionary using Psycopg2
还是用更新语句无法做到这一点?
答案 0 :(得分:0)
如果您提前知道各列的名称,您只是在寻找更新语法吗?
cursor.execute('UPDATE test set column1=%(column1)s, column2=%(column2)s where id=%(id)s', mydict)
如果您正在寻找不提前知道列的解决方案,则可以使用SQL string composition模块。只需确保您始终使用参数化查询,并且不要尝试自己构建整个查询以避免SQL注入问题。