psycopg2.extras.DictCursor 没有给我列名

2024-01-11

我正在使用 psycopg2 访问 Postgres 数据库中的数据。我使用 psycopg2.extras.DictCursor 使用以下查询以类似字典的形式获取数据:

try:
    self.con = psycopg2.connect(dbname=self.db, user=self.username, 
host=self.host, port=self.port)

cur = self.con.cursor(cursor_factory=psycopg2.extras.DictCursor)

cur.execute("SELECT * FROM card")

result = cur.fetchall()

print result

我得到的输出为列表:

[['C01', 'card#1', 'description#1', '1'], ['C02', 'card#2', 'description#2', '1']]

但是,我也想要列名称。我读到另一个类似的问题here https://stackoverflow.com/questions/6739355/dictcursor-doesnt-seem-to-work-under-psycopg2,但是在尝试以下操作时我得到了KeyError:

cur.execute("SELECT * FROM card")
for row in cur:
    print(row['column_name']) 

但是,以下工作有效:

cur.execute("SELECT * FROM card")
for row in cur:
    print(row['id'])

Output:

C01
C02

关于如何获取列名称有什么想法吗?


要获取所有列名称,您可以使用该方法keys对于行项目,例如:

cur.execute("SELECT * FROM card")
result = cur.fetchall()
keys = list(result[0].keys()) if result else []
for row in result:
    for key in keys:
        print(row[key])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

psycopg2.extras.DictCursor 没有给我列名 的相关文章

随机推荐