2016-07-06 31 views
1

psycopg2を使用してpsqlクエリを実行しています。psycopg2のPython配列の操作PostgreSQLのクエリ

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

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

私はAPIエンドポイントを作るために、この配列を再フォーマットする必要があります。現在は、タプルの2番目の値が空のタプルのリストです。反復する単純なループによって、ジョブが完了します。

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

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

ただし、このクエリはかなり大きくなる可能性があります。また、リスト全体を反復することで、クエリには不要と思われる遅延が追加されます。一定の時間内に配列を平坦化する方法や、必要な形式で返される異なるpsycopg2関数がありますか?クエリ内の

答えて

1

リストを変換するのに必要な時間は、データベースクエリに比べて無視できる程度です。 しかし、リストを直接作成する必要はありません。

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

集計:

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

出力:

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