ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2019-10-30 21:56:10  阅读:257  来源: 互联网

标签:postgresql type-conversion uuid psycopg2 python


我有一个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')]

标签:postgresql,type-conversion,uuid,psycopg2,python
来源: https://codeday.me/bug/20191030/1971036.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有