Heroku壳牌。本地写入csv文件

2024-09-27 23:22:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要查询远程db并用数据编写一个本地csv文件。我试过这个代码:

heroku run python manage.py shell

>>> from libros.models import LibrosDisponibles
>>> x = LibrosDisponibles.objects.all()
>>> 
>>> import csv
>>> with open("librosd_backup.csv", "wb") as f:
...   e = csv.writer(f, quoting=csv.QUOTE_ALL)
...   for l in x:
...     e.writerow([l.perfil, l.libro])
... 
>>> 

它不起作用文件是空的,我写的地方当然不对。但是,我怎么解决这个问题呢?在


Tags: 文件csv数据run代码frompyimport
1条回答
网友
1楼 · 发布于 2024-09-27 23:22:33

又快又脏,而且不完全是通过heroku run:通过pg:psql执行SQL语句,并使用COPY命令。E、 g.heroku pg:psql -c 'copy my_table to stdout with csv header' > my_table.csv。为报表和其他分析生成数据的非常快速和方便的方法。您可以使用表名或完整的sql语句(例如,copy (select foo, bar from baz) to stdout with csv header)。在

有关COPY的信息,请参见http://www.postgresql.org/docs/9.3/static/sql-copy.html。您可能想知道是否可以使用“tofilename”版本的调用。。。不能。文件名是在数据库服务器上定义的,您无权访问该服务器。在

如果你需要尊重你的逻辑

1)编写一个本地脚本并使用heroku pg:credentials来设置DATABASE_URL(实际上,不要这样做-如果你忘记了取消设置DATABASE_URL坏事情会发生。)

2)编写一个API端点来执行您编写的代码并直接进行流式处理(请参见https://docs.djangoproject.com/en/1.9/howto/outputting-csv/),这样您就可以通过cURL在本地调用它(当然是经过身份验证的)

相关问题 更多 >

    热门问题