使用psycopg2将python字典更新为postgres db表

时间:2019-07-07 10:33:38

标签: python-3.x postgresql psycopg2

我有一本字典,代表一个表中的一行。
例如我的桌子是这样的:

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

还是用更新语句无法做到这一点?

1 个答案:

答案 0 :(得分:0)

如果您提前知道各列的名称,您只是在寻找更新语法吗?

cursor.execute('UPDATE test set column1=%(column1)s, column2=%(column2)s where id=%(id)s', mydict)

如果您正在寻找不提前知道列的解决方案,则可以使用SQL string composition模块。只需确保您始终使用参数化查询,并且不要尝试自己构建整个查询以避免SQL注入问题。