我正在使用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,但是在尝试以下问题时,出现了 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'])
输出:
C01
C02
关于如何获取列名的任何想法?
答案 0 :(得分:1)
要获取所有列名,可以对行项目使用方法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])