首页 > 解决方案 > 如何使用 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 qs_results:
    
    json_data.append([
        escape(item.col1),
        escape(item.col2),
        escape(item.col3),
    ])

    return ExcelResponse(json_data, 'title')

但这真的很慢。输出有时可能有 100,000 行(和 20 列),生成时间超过 10 分钟,并且经常超时。

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

标签: pythondjangoexcel

解决方案


您可以按照此链接使用 celery 任务 Django 导出功能和 Celery 任务执行该过程

或者您可以按照此链接在 django https://thoslin.github.io/async-download-with-celery/中使用异步视图执行此操作

在这些情况下,两者都工作得很好


推荐阅读