Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自psycopg2 PostgreSQL查询的Python数组操作_Python_Postgresql_List_Psycopg2 - Fatal编程技术网

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

来自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

我正在使用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)