PythonFlask异常:意外的数据类型<type'unicode'>,<type'list'>

2024-09-29 17:22:26 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我试图从下面提到的代码下载一个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" )

Tags: 文件代码ref数据库dbdataargsquery
1条回答
网友
1楼 · 发布于 2024-09-29 17:22:26

根据您提供的代码,您不尊重类型契约。因为zip(..)返回一个元组列表(这里是2元组),这意味着for循环中的data实际上是一个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" )

相关问题 更多 >

    热门问题