2

以下是我在 postgresql 中的表结构:

CREATE TYPE lang AS ENUM ('english','hindi','marathi');
CREATE TABLE assignment (
    title varchar(100),
    ids lang[]
);

我想在 python 中使用参数绑定在赋值表中插入一条记录。我尝试了以下代码:

cursor.execute('insert into assignment (title, ids) values (%s, %s)',["person1",["english","hindi"]])

但它会生成无效查询,例如:

insert into assignment (title, ids) values ('person1', ARRAY['english','hindi'])

因此我在查询中遇到语法错误。

正确的查询是:

insert into assignment (title, ids) values ('person1', '{"english","hindi"}')

有人可以让我知道使用参数绑定生成正确查询的方法吗?

4

1 回答 1

4

将传递的数组转换为lang[]

cursor.execute('''
    insert into assignment (title, ids) 
    values (%s, %s::lang[])
    ''', ["person1",["english","hindi"]])
)
于 2017-04-03T19:09:52.797 回答