从 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)