繁体   English   中英

在 AWS 中存储从 Pandas 导出的 Excel 文件

[英]Store Excel file exported from Pandas in AWS

我正在使用 Flask 制作一个带有 SQLite 数据库的小型网站。 我想做的一件事是获取一些数据(从数据库中)并将其导出为 Excel 文件。 我想提供一个下载该 Excel 文件的选项。 一种选择是使用 Pandas 写入存储在 Web 服务器上的 Excel 文件,并使用 Flask 的send_file提供下载选项。

但是,是否可以提供可下载的 Excel 文件而不将文件“本地”存储在服务器上? 例如在 AWS S3 上。 我希望在 Web 服务器上具有可预测的存储大小。 (无论如何,看看是否有可能。)

一种选择可能是“本地”写入文件,然后将其发送到 AWS,然后从服务器中删除它。 理想情况下,我宁愿直接捕获文件流,然后将其发送到 S3,但我认为这是不可能的,因为to_excel仅采用文件路径(或ExcelWriter对象,但采用文件路径)。

要添加到 balderman 的答案中,将其发送到 S3 的完整代码是

import io
import pandas as pd
import boto3

# ...

# make data frame 'df'

with io.BytesIO() as output:
  with pd.ExcelWriter(output, engine='xlsxwriter') as writer:
    df.to_excel(writer)
  data = output.getvalue()

s3 = boto3.resource('s3')
s3.Bucket('my-bucket').put_object(Key='data.xlsx', Body=data)

另请参阅XlsxWriter 文档

取自此处: 使用 Pandas Excelwriter 写入 StringIO 对象?

您可以将“输出”转储到 S3

# Note, Python 2 example. For Python 3 use: output = io.BytesIO().
output = StringIO.StringIO()

# Use the StringIO object as the filehandle.
writer = pd.ExcelWriter(output, engine='xlsxwriter')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM