如何使用python和Django高效导出大型Excel文件

如何使用python和Django高效导出大型Excel文件,python,django,excel,Python,Django,Excel,我有一个非常大的数据库(数十亿行),用户可以通过使用django构建的网站进行查询。我想为用户提供以excel格式下载查询结果的可能性。目前代码如下: from excel_response import ExcelResponse qs = data.objects_in(db) qs_results = qs.filter([...]).order_by([...]]) json_data = [['col1', 'col2', 'col3']] for item in

我有一个非常大的数据库(数十亿行),用户可以通过使用django构建的网站进行查询。我想为用户提供以excel格式下载查询结果的可能性。目前代码如下:

from excel_response import ExcelResponse

qs = data.objects_in(db)
qs_results = qs.filter([...]).order_by([...]])

json_data = [['col1', 'col2', 'col3']]
    
    for item in qs_results:
    
    json_data.append([
        escape(item.col1),
        escape(item.col2),
        escape(item.col3),
    ])

    return ExcelResponse(json_data, 'title')
但这真的很慢。输出有时可能有100000行(和20列),需要10分钟以上才能生成,并且经常超时


如何高效地输出具有大量行的excel文件?

您可以按照此链接使用芹菜任务执行此过程

或者您也可以按照此链接在django中使用async视图来执行此操作


如果您只需要从每个对象使用
,就可以使用
col1
col2
col3
,那么这两种方法在这些情况下都非常有效。值列表()将大大加快速度。