Список словарь вывод не то, что я ожидал - PullRequest
0 голосов
/ 08 ноября 2019

я пытаюсь загрузить данные из оболочки py manage.py

с помощью этого кода

def makeDictFactory(cursor):
    columnNames = [d[0] for d in cursor.description]
    def createRow(*args):
        return dict(zip(columnNames, args))
    return createRow 

import cx_Oracle
dsn_tns = cx_Oracle.makedsn('', '', sid='') 
conn = cx_Oracle.connect(user=r'', password='', dsn=dsn_tns) 
c = conn.cursor() 
c.execute("select table_name from all_tables")
c.rowfactory = makeDictFactory(c)
c.fetchall()

желаемый вывод - {a: b, c: d}, но когдая выполняю c.fetchall (), он становится [{a: b}, {c: d}], он вызывает то, что когда я помещаю код в бэкэнд и хочу отобразить его во внешнем интерфейсе, он вернет ошибку, похожую на необъяснимый типdict, unhashable type list или context должен dict или list

что мне делать?

1 Ответ

1 голос
/ 09 ноября 2019

cursor.fetchall() собирается вернуть список словарей, использующих этот метод. Это ожидается. Для вас может иметь смысл сделать что-то подобное, если вы хотите обрабатывать каждую строку независимо:

for rowDict in c:
    do_something_with_row_dict(rowDict)
...