DictCursor, похоже, не работает под psycopg2

Я раньше не работал с psycopg2, но я пытаюсь изменить фабрику курсора на DictCursor, чтобы функция fetchall или fetchone возвращала словарь вместо списка.

I создал тестовый сценарий, чтобы упростить задачу и только протестировать эту функциональность. Вот мой небольшой фрагмент кода, который, как мне кажется, должен работать

import psycopg2
import psycopg2.extras

conn = psycopg2.connect("dbname=%s user=%s password=%s" % (DATABASE, USERNAME, PASSWORD))

cur = conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
cur.execute("SELECT * from review")

res = cur.fetchall()

print type(res)
print res

Переменная res всегда является списком, а не словарем, как я ожидал.

Текущий обходной путь, который я реализовал, заключается в использовании этой функции, которая создает словарь и прогонять через нее каждую строку, возвращенную функцией fetchall.

def build_dict(cursor, row):
    x = {}
    for key,col in enumerate(cursor.description):
        x[col[0]] = row[key]
    return d

Python имеет версию 2.6.7, а psycopg2 - версию 2.4.2.

53
задан Jim 18 July 2011 в 09:59
поделиться