2017-04-03 7 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

ありがとうございます。これは私のために働いた –

関連する問題