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

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 函数 returns 我需要的格式?

在查询中聚合:

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)