【发布时间】:2021-05-28 18:14:35
【问题描述】:
我有这个 python3 代码:
conn = psycopg2.connect( ... )
curr = conn.cursor()
curr.execute(code)
rows = curr.fetchall()
'code' 有选择查询语句的地方
执行此操作后,“行”列表将仅包含选定行值的列表。如何运行 'curr.execute' 以同时获得相应的 col 标头?
如果我说的意思
Select col1, col2 from table Where some_condition;
我希望我的“行”列表包含 [['col1', 'col2'], [some_val_for_col1, some_val_for_col2] ....]。获取这些 col 标头的任何其他方式也可以,但“代码”中的选择查询不应更改。
【问题讨论】:
-
找到解决方案:使用字典光标。首先导入 psycopg2 和 psycopg2.extras。然后在上面的代码中将 'curr = conn.cursor()' 更改为 'curr = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)'。然后使用 'for key in dict(rows[0]): print(key)' --> 这将打印所有 col 标题。确保您有正确的缩进并且“行”不是一个空列表。
标签: postgresql psycopg2