我目前在postgres中有一个自定义类型:
create type times_type as
(
start varchar,
end varchar,
rate real
);
我还有一个函数,它接受一个times_type数组:
create function insert_data(times_values times_type[])
当我使用命名元组并使用callproc一次插入一个值时,它工作得很好,即:
Document = namedtuple('times_type', 'start
end rate')
cur.callproc('insert_data',
(Document('13:00', '16:00', 12.56))
但是现在函数需要一个数组,所以我尝试:
Document = namedtuple('times_type', 'start
end rate')
cur.callproc('insert_data',
([Document('13:00', '16:00', 12.56),
Document('17:00', '18:00', 12.56),
Document('19:00', '20:00', 12.56)])
psycopg2给了我一个函数不存在的错误,在处理自定义类型的数组时,你有什么必须做的吗?
1条答案
按热度按时间anauzrmj1#
复合类型数组的问题在于它们必须显式转换,否则Postgres会将其视为
record[]
。