簡體   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