gpt4 book ai didi

python - 使用 psycopg2 将 PostgreSQL UUID 数组作为列表返回

转载 作者:太空狗 更新时间:2023-10-30 03:04:09 29 4
gpt4 key购买 nike

我有一个 SQL 语句,它包含一个嵌入在 ARRAY() 中的子查询,如下所示:

SELECT foo, ARRAY(SELECT x from y) AS bar ...

查询工作正常,但是在 psycopg2 结果游标中,数组作为字符串返回(如 "{1,2,3}"),而不是列表。

我的问题是,将这些字符串转换为 Python 列表的最佳方法是什么?

最佳答案

它不需要解析就对我有用:

import psycopg2

query = """
select array(select * from (values (1), (2)) s);
"""

conn = psycopg2.connect('dbname=cpn user=cpn')
cursor = conn.cursor()
cursor.execute(query)
rs = cursor.fetchall()

for l in rs:
print l[0]

cursor.close()
conn.close()

执行结果:

$ python stackoverflow_select_array.py 
[1, 2]

更新

需要注册uuid类型:

import psycopg2, psycopg2.extras

query = """
select array(
select *
from (values
('A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'::uuid),
('A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'::uuid)
)s
);
"""

psycopg2.extras.register_uuid()

conn = psycopg2.connect('dbname=cpn user=cpn')
cursor = conn.cursor()
cursor.execute(query)
rs = cursor.fetchall()

for l in rs:
print l[0]

cursor.close()
conn.close()

结果:

$ python stackoverflow_select_array.py 
[UUID('a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'), UUID('a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11')]

关于python - 使用 psycopg2 将 PostgreSQL UUID 数组作为列表返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16797767/

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