列表字典输出不是我所期望的

list Dictionary output isnt what i expected

我尝试从py加载数据manage.py shell

使用此代码

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}] ,它因为当我将代码放在后端并想将其显示到前端时,它会 return 一个错误,如不可散列类型字典、不可散列类型列表或上下文必须字典或列表

我该怎么办?

cursor.fetchall() 将使用此方法 return 列表 字典。这是意料之中的。如果您想独立处理每一行,这样做对您来说可能更有意义:

for rowDict in c:
    do_something_with_row_dict(rowDict)