python - 如何使用 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文件?
解决方案
您可以按照此链接使用 celery 任务 Django 导出功能和 Celery 任务执行该过程
或者您可以按照此链接在 django https://thoslin.github.io/async-download-with-celery/中使用异步视图执行此操作
在这些情况下,两者都工作得很好
推荐阅读
- ffmpeg - 如何编译 ffmpeg 以仅获得 mp3 和 mp4 支持
- windows - boto3 - base64 encoded lifecycle configuration produces instance failure
- sip - 为什么我们不能使用“本地标签”和“远程标签”来识别对话?
- android - 出现错误:java.lang.ArrayIndexOutOfBoundsException: length=1; 索引=1
- c - 在 C 中操作动态分配的 2D 字符数组
- javascript - 打乱创建的 div 顺序的问题
- javascript - 如果数据库中存在,则更新选择值
- python - 获取 Facebook HTML 登录页面而不是 CSV 文件
- c# - 如何在组合框中像谷歌一样搜索 C# wpf
- text-to-speech - 基于多人语料库的语音合成