psycopg2.extras.DictCursor не дает мне названия столбцов - PullRequest
2 голосов
/ 11 апреля 2019

Я использую 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']]

Однако мне также нужны имена столбцов. Я прочитал еще один похожий вопрос здесь , но, попробовав следующее, я получаю 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

Есть идеи, как мне получить имена столбцов?

1 Ответ

1 голос
/ 11 апреля 2019

, чтобы получить все имена столбцов, вы можете использовать метод 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])
...