作为该过程的一部分,我的网站从pandas数据框创建了一个csv文件 -
由于应用程序部署在Heroku上,这里没有持久文件存储,我想将其保存到Amazon S3。我已经为上传的文件和静态文件设置了此项功能,但无法使其对此起作用。非常感谢任何帮助。df.to_csv()
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'
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()))
看看Boto。代码非常简单,您不必担心将文件写出,只需直接发布即可。
heroku config:add AWS_ACCESS_KEY_ID='your_key_here'
heroku config:add AWS_SECRET_ACCESS_KEY='your_secret_here'
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'
with open(csv_filename, 'rb') as f:mymodel.myfield.save('django_test.csv', File(f), save=True)
- Zemogle