Как вставить столбец массива postgres, используя Python Psycopg2 и привязку параметров?

Ниже приведена структура моей таблицы в 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"}')

Может кто-нибудь сообщить мне способ создания правильного запроса с помощью привязки параметров?

1 ответ

Приведите переданный массив к lang[]:

cursor.execute('''
    insert into assignment (title, ids) 
    values (%s, %s::lang[])
    ''', ["person1",["english","hindi"]])
)
Другие вопросы по тегам