我需要查询远程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])
...
>>>
它不起作用文件是空的,我写的地方当然不对。但是,我怎么解决这个问题呢?在
又快又脏,而且不完全是通过
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
在本地调用它(当然是经过身份验证的)相关问题 更多 >
编程相关推荐