列表字典输出不是我所期望的
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)
我尝试从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)