2017-10-18 2 views
0

Guten Nachmittag, ich habe eine Anwendung in Django 1.10, wo ich eine Sicherungskopie der bd erstellen müssen, sollte diese Kopie gemacht werden, wenn der Benutzer auf eine Schaltfläche klickt, die in einer Vorlage platziert und heruntergeladen wird die Kopie im Team des Benutzers.Backup DB Django MysqlDump

In meiner views.py habe ich folgendes.

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') 

aber ich habe den Fehler

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

diese direkt von der Konsole tun erstellt die Datei für mich, und überprüfen Sie die Berechtigungen des Ordners. Ich schätze Ihre Zusammenarbeit

+0

Waren Sie in diesem views.py "import os" verwendet? – noes1s

+0

Wenn es importiert wird – jhon1946

+0

Ich verstehe nicht? – noes1s

Antwort

0

Gemäß der Popen Dokumentation, Popen nimmt eine Liste von Argumenten. Wenn Sie eine Zeichenfolge übergeben, wird diese als Befehlsname behandelt - die gesamte Zeichenfolge wird als Befehl behandelt, nicht als Befehl mit Argumenten.

Split die Zeichenfolge Argument:

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