2016-12-11 4 views
0

I mysqldump aus einer django Funktion ausführen müssen. Ich kann von der Terminal-Befehlszeile so leicht genug tun, aber wenn ich versuche, es aus dem Python-Skript ausführen, bekomme ich eine Fehlermeldung:mysqldump aus Skript Python aber Befehl nicht gefunden

sh: mysqldump: command not found 

wenn die folgenden ausgeführt wird.

filestamp = date.today() 
dumpcmd = "mysqldump -u root appdb > appdb%s.out" % (filestamp) 
os.system(dumpcmd) 

Ich denke, das Problem etwas mit dem Weg zu tun, entweder in der django Anwendung oder Eclipse, aber ich kann nicht herausfinden, warum mysqldump nicht innerhalb der django app gefunden werden, aber es kann aus sein die Befehlszeile/virtualenv

+0

Sie sind besser dran mit dem Verwaltungsbefehl 'dumpdata' – karthikr

+0

, aber warum möchten Sie das tun? – e4c5

+0

Ich möchte die Synchronisierung einer Datenbank auf meinem lokalen Rechner mit derselben online gehosteten Datenbank automatisieren. Der erste Schritt, den ich normalerweise betreibe, ist mysqldump, also versuche ich das programmatisch zu replizieren. –

Antwort

0

stellen Sie sicher, mysqldump ist in Ihrem Pfad

$ whereis mysqldump; echo $PATH 
mysqldump: /usr/bin/mysqldump /usr/share/man/man1/mysqldump.1.gz 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 

und/oder

using mysqldump and mysql inside python

import subprocess 
subprocess.Popen('mysqldump -h localhost -P 3306 -u -root appdb > appdb.sql', shell=True) 

Oder verwenden Sie den vollständigen Pfad in der Python-Anweisung. z.B. /usr/bin/mysqldump