来自psycopg2 PostgreSQL查询的Python数组操作
我正在使用psycopg2执行psql查询来自psycopg2 PostgreSQL查询的Python数组操作,python,postgresql,list,psycopg2,Python,Postgresql,List,Psycopg2,我正在使用psycopg2执行psql查询 cur.execute("SELECT DISTINCT name FROM product") result = cur.fetchall() print(result) [('product1',), ('product2',), ('product3',), ('product4',)] 我需要重新格式化此数组以生成API端点。现在它是一个元组列表,其中元组的第二个值为空。通过一个简单的循环来完成任务 results=[] for item
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)