gpt4 book ai didi

python - psycopg2 + 存储过程 + 复合类型

转载 作者:行者123 更新时间:2023-11-29 12:48:00 25 4
gpt4 key购买 nike

我在 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 调用存储过程呢?

最佳答案

您可以在元组中传递 namephoneaddress,最后使用显式转换以更好地消除歧义:

cur.execute("sp_insertItem(%s, %s, %s, %s::t_document)",
['Name', 'Phone', 'Address', ('Title', 'Metadata', 'Data')])

您也可以使用 namedtuple:它的改编方式相同。

Document = namedtuple('Document', 'title metadata data')

关于python - psycopg2 + 存储过程 + 复合类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8208218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com