我好像有问题。我有一个视图,我可以允许员工用户下载该程序的MySQL数据库,但是它根本不起作用。我得到一个错误,它说Errno 2] No such file or directory: '/usr/local/src/djcode/c2duo_mms/backup.gz'
。在
我不知道为什么会出错,但可能的答案是因为我无法正确地转储数据库。找不到备份.gz,因为它找不到文件,因为它应该转储文件的步骤不起作用。在
视图.py
@login_required
def dbbackup(request):
if not (request.user.is_authenticated() and request.user.is_staff):
raise http.Http404
os.popen3("mysqldump -u *username* -p*password* *database* > /usr/local/src/djcode/c2duo_mms/backup.sql")
os.popen3("gzip -c /usr/local/src/djcode/c2duo_mms/backup.sql > /usr/local/src/djcode/c2duo_mms/backup.gz"
dataf = open('/usr/local/src/djcode/c2duo_mms/backup.gz', 'r')
return HttpResponse(dataf.read(), mimetype='application/x-gzip')
编辑:我试过运行一个小python脚本。下面的python文件可以工作(保存名为备份.gz在c2duo_mms目录中)。为什么我不能从我的视图.py文件!?在
^{pr2}$
试试这样的方法:
var“output”将允许您访问命令中的任何错误消息。在
在此处使用完整路径:
也就是说,你在哪里保存sql。在
Popen打开一个进程,但它不会在它周围创建一个shell。因为我不期望中间shell,所以我不希望那里的重定向会被解释。 Popen确实会向进程内外的各种流返回文件句柄—如果没有重定向,您将得到标准输出。在
如果您读取并存储来自这些管道句柄的内容,则可以在python代码中执行重定向。在
也许您可以考虑子流程模块http://docs.python.org/library/subprocess.html-并且可以指定与它一起使用的shell,这样就可以解释重定向。在
相关问题 更多 >
编程相关推荐