2017-10-18 115 views
0

下午好,我在Django 1.10中有一个应用程序,我需要创建一个bd的备份,当用户点击一个按钮将被放置在模板中并下载用户团队中的副本。备份数据库Django MysqlDump

在我的views.py中,我有以下几点。

def backup(request): 
    subprocess.Popen("mysqldump -u root -p12345 victimas > /home/proyecto/backup.sql") 
    subprocess.Popen("gzip -c /home/proyecto/backup.sql > /home/proyecto/backup.gz") 
    dataf = open('/home/proyecto/backups/backup.gz', 'r') 
    return HttpResponse(dataf.read(), mimetype='application/x-gzip') 

但我得到的错误

[Errno 2] No such file or directory: django mysqldump 

直接从控制台是为了我自己创建该文件,并检查文件夹的权限。 我很感谢你的合作

+0

你有没有在这个views.py使用 “导入OS”? – noes1s

+0

如果是进口 – jhon1946

+0

我不明白? – noes1s

回答

0

根据Popen文档,Popen接受参数列表。如果你传递一个字符串,它将被视为命令名称 - 整个字符串将被视为命令,而不是带有参数的命令。

分割使用字符串参数:

 
import shlex 
command_line = "mysqldump -u root -p12345 victimas > /home/proyecto/backup.sql" 
args = shlex.split(command_line) 
subprocess.Popen(args)