psycopg2 +存储过程+复合型
我在 PostgreSQL 中有一个存储过程,它采用 t_document
复合类型,定义如下:
CREATE TYPE t_document AS (
title text,
metadata text,
data text
);
该存储过程还采用其他参数,其签名如下:
CREATE or REPLACE FUNCTION sp_insertItem
(
name varchar(100) ,
phone varchar(100) ,
address varchar(150) ,
document t_document
)
从另一个存储过程调用此存储过程如下所示:
sp_insertItem('Name','Phone', 'Address', row('Title', 'Metadata', 'Data'));
我知道我可以使用 Cursor.callproc 调用过程并给出所需的参数。但是,我不知道如何传递像 t_document
这样的复合参数。那么如何从 psycopg2 调用需要复合类型的存储过程呢?
I have a stored procedure in PostgreSQL that takes a t_document
composite type defined as follows:
CREATE TYPE t_document AS (
title text,
metadata text,
data text
);
The stored procedure takes other arguments as well, with a signature like:
CREATE or REPLACE FUNCTION sp_insertItem
(
name varchar(100) ,
phone varchar(100) ,
address varchar(150) ,
document t_document
)
Calling this stored procedure from another stored procedure looks like this:
sp_insertItem('Name','Phone', 'Address', row('Title', 'Metadata', 'Data'));
I know I can call procedures using cursor.callproc
and give the required arguments. However, I don't know how to pass compound arguments like t_document
. So how do I call a stored procedure from psycopg2 that expects a compound type?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以在元组中传递
name
、phone
和address
,最终使用显式强制转换来更好地消除歧义:您还可以使用namedtuple:它以同样的方式进行调整。
You can pass
name
,phone
, andaddress
in a tuple, eventually with an explicit cast to better disambiguate:You could also use a namedtuple: it is adapted the same way.