【发布时间】:2015-04-01 16:51:56
【问题描述】:
作为该过程的一部分,我的网站从 pandas 数据框创建了一个 csv 文件 -
df.to_csv()
由于应用程序部署在 Heroku 上,这里没有持久文件存储,我想将其保存到 Amazon S3。我已经为上传的文件和静态文件设置了这个,但不能让它为此工作。非常感谢任何帮助。
【问题讨论】:
标签: python django heroku amazon-s3
作为该过程的一部分,我的网站从 pandas 数据框创建了一个 csv 文件 -
df.to_csv()
由于应用程序部署在 Heroku 上,这里没有持久文件存储,我想将其保存到 Amazon S3。我已经为上传的文件和静态文件设置了这个,但不能让它为此工作。非常感谢任何帮助。
【问题讨论】:
标签: python django heroku amazon-s3
也许您可以使用django-storages 将您的文件保存到 Amazon S3。像这样将您的 AWS 凭证添加到您的配置中:
heroku config:add AWS_ACCESS_KEY_ID='your_key_here'
heroku config:add AWS_SECRET_ACCESS_KEY='your_secret_here'
heroku config:add AWS_STORAGE_BUCKET_NAME='your_bucket_name_here'
并像这样在您的 settings.py 中检索它们:
AWS_ACCESS_KEY = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME')
更新:您可以尝试StringIO 执行以下操作:
from django.core.files.base import ContentFile
from StringIO import StringIO
output = StringIO()
df.to_csv(output)
mymodel.myfield.save('django_test.csv', ContentFile(output.getvalue()))
【讨论】:
with open(csv_filename, 'rb') as f:mymodel.myfield.save('django_test.csv', File(f), save=True)
看看博托。该代码非常简单,您不必担心将文件写出,只需直接发布即可。
heroku config:add AWS_ACCESS_KEY_ID='your_key_here'
heroku config:add AWS_SECRET_ACCESS_KEY='your_secret_here'
Boto 将自动使用配置:
import boto
filecontents = "colm1, colm2, etc"
c = boto.connect_s3()
b = c.get_bucket('mybucket') # substitute your bucket name here
from boto.s3.key import Key
k = Key(b)
k.key = filecontents
k.get_contents_as_string()
'colm1, colm2, etc'
【讨论】: