Python psycopg2.extras.DictCursor没有给我列名

Python psycopg2.extras.DictCursor没有给我列名,python,psycopg2,Python,Psycopg2,我正在使用psycopg2访问Postgres数据库中的数据。我使用psycopg2.extras.DictCursor通过以下查询以类似dict的形式获取数据: 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.DictCurs

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

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']]
但是,我也需要列名。我读了另一个类似的问题,但在尝试下面的问题时,我得到了一个键错误

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'])
输出:

C01
C02

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

要获取所有列名,您可以对行项目使用mehtod
键,例如:

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

@BearBrown谢谢,但我仍然收到一个错误:“DictCursor”对象没有属性“keys”
list(结果[0].keys())
只是想添加,要获取列名,我们需要将键转换为列表。现在,它返回一个迭代器对象