2017-04-03 39 views
0

以下是我的表结构中的PostgreSQL:如何使用python Psycopg2和参数绑定插入postgres数组列?

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"}') 

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

+0

即有效阵列的语法。什么是错误信息? –

+0

错误:列“ids”的类型为lang [],但表达式的类型为text [] –

回答

2

角色传递的数组到lang[]

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

谢谢。这对我有效 –

相关问题