嗨,我正在尝试从下面提到的代码中下载一个excel文件,我正在从firebase数据库中查询数据。 但是,当我尝试运行此代码时,它给了我Unicode异常。 谁能帮我解决这个问题? 预先感谢。
@mod_drprax_backend.route('/download-excel/', methods=['GET'])
def export_db():
array = []
args = get_query_args(request)
ref = db.collection(u'Providers')
providersList, total = firebase_admin_query_helper(ref, args)
pro = providersList[0]
collect = zip(pro.keys(), pro.values())
for data in collect:
providerDetails = [data]
array.append(providerDetails)
return excel.make_response_from_array([array],"xls",file_name=u"excel_doc" )
答案 0 :(得分:0)
根据您提供的代码,您不遵守类型合同。由于zip(..)
返回一个元组列表(此处为2元组),因此这意味着data
循环中的for
实际上是2元组(显然是(unicode, list)
) 。您不能将其提供给excel导出。
因此,您需要进行一些线性化。例如:
@mod_drprax_backend.route('/download-excel/', methods=['GET'])
def export_db():
array = []
args = get_query_args(request)
ref = db.collection(u'Providers')
providersList, total = firebase_admin_query_helper(ref, args)
pro = providersList[0]
for ky, vls in pro.items():
for vl in vls:
for subky, subvl in vl.items():
providerDetails = [ky, subky, subvl]
array.append(providerDetails)
return excel.make_response_from_array([array],"xls",file_name=u"excel_doc" )
请注意,如果pro
是字典,则可以改用.items()
,我们还可以使用列表理解:
@mod_drprax_backend.route('/download-excel/', methods=['GET'])
def export_db():
args = get_query_args(request)
ref = db.collection(u'Providers')
providersList, total = firebase_admin_query_helper(ref, args)
pro = providersList[0]
array = [
[ky, subky, subvl]
for ky, vls in pro.items()
for vl in vls
for subky, subvl in vl.items()
]
return excel.make_response_from_array([array],"xls",file_name=u"excel_doc" )