从 psycopg2 获取字典
Getting dictionary from psycopg2
我有 table 看起来像这样:
--------+-------+
8 | 8 |
8 | 9 |
8 | 10 |
8 | 11 |
8 | 29 |
8 | 30 |
8 | 33 |
8 | 34 |
9 | 8 |
9 | 9 |
9 | 10 |
9 | 11 |
9 | 12 |
9 | 13 |
9 | 19 |
我想在 python 中得到的是一个字典,其中的键来自第一列,值是第二列的列表(即 dic[8]=[8,9,10,11,29,30,33,34]
)。
现在,我正在从 table 中获取列表列表并自己填充字典,但这浪费了太多时间。
最有效的方法是什么?
PostgreSQL 不支持在客户端进行聚合,而是支持 array_agg 函数,您可以将其与 GROUP BY
一起使用,例如:
SELECT col1, array_agg(col2) FROM table_name GROUP BY col1
只要您只返回两列,就可以在 cursor/query 上使用 dict
,例如:
my_lookup = dict(cursor)
我有 table 看起来像这样:
--------+-------+
8 | 8 |
8 | 9 |
8 | 10 |
8 | 11 |
8 | 29 |
8 | 30 |
8 | 33 |
8 | 34 |
9 | 8 |
9 | 9 |
9 | 10 |
9 | 11 |
9 | 12 |
9 | 13 |
9 | 19 |
我想在 python 中得到的是一个字典,其中的键来自第一列,值是第二列的列表(即 dic[8]=[8,9,10,11,29,30,33,34]
)。
现在,我正在从 table 中获取列表列表并自己填充字典,但这浪费了太多时间。
最有效的方法是什么?
PostgreSQL 不支持在客户端进行聚合,而是支持 array_agg 函数,您可以将其与 GROUP BY
一起使用,例如:
SELECT col1, array_agg(col2) FROM table_name GROUP BY col1
只要您只返回两列,就可以在 cursor/query 上使用 dict
,例如:
my_lookup = dict(cursor)