繁体   English   中英

来自psycopg2 PostgreSQL查询的Python数组操作

[英]Python array manipulation from psycopg2 PostgreSQL query

我正在使用psycopg2进行psql查询。

cur.execute("SELECT DISTINCT name FROM product")
result = cur.fetchall()
print(result)

[('product1',), ('product2',), ('product3',), ('product4',)]

我需要重新格式化此数组以创建API端点。 现在,它是一个元组列表,其中元组的第二个值为空。 一个简单的循环遍历就可以完成工作。

results=[]
for item in result:
    results.append(item[0])
print(results)

['product1','product2','product3','product4']

但是,此查询可能会变得很大。 遍历整个列表会增加查询的延迟,这似乎没有必要。 有没有办法在恒定时间内展平数组,或者有其他psycopg2函数以我需要的格式返回?

汇总查询:

query = '''
    select array_agg(distinct name)
    from product
'''
cursor.execute(query)
rs = cursor.fetchall()[0][0]
print rs

输出:

['product1', 'product2', 'product3', 'product4']

与数据库查询相比,转换列表所需的时间可以忽略不计。 但是您无需直接创建列表:

cur.execute("SELECT DISTINCT name FROM product")
result = [item for item, in cur]
print(result) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM