作为整个过程的一部分,我的网站从pandas数据框中创建了一个csv文件 -
df.to_csv()
由于应用程序部署在Heroku上,这里没有持久文件存储,我想将其保存到Amazon S3。我为上传的文件和静态文件设置了此设置,但无法让它为此工作。任何帮助非常感谢。
答案 0 :(得分:1)
也许您可以使用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()))
答案 1 :(得分:1)
看看Boto。代码非常简单,您不必担心直接将文件写出来。
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'