Ich schreibe eine Python-Funktion, die eine MySQL-Datenbank mithilfe von Bash in eine SQL-Datei exportieren muss. Ich verwende den Befehl mysqldump.
mysqldump -u bandana -p movies > /Users/Mac/Downloads/testOutput.sql
Dieser Befehl funktioniert für meine Zwecke gut genug. Meine Frage ist, wie man dies in ein Python-Skript umwandelt, das von einer Funktion ausgeführt werden kann.
Ich habe versucht, os.system zu verwenden, aber während des Betriebs ist ein Passwort im Terminal erforderlich.
def cloneDB(): os.system("mysqldump -u bandana -p movies > /Users/Tis_Me/Downloads/testOutput.sql") 输入密码:
Ich habe auch versucht, das Unterprozessmodul zu verwenden, aber ich weiß nichts darüber. Ich bekomme nur ein paar Fehler, von denen ich nicht weiß, wie ich sie beheben kann.
def cloneDB(): subprocess.run(["mysqldump", "-u bandana", "-p movies", "> /Users/Tis_Me/Downloads/testOutput.sql"])
Ich habe mich gefragt, ob ich zusätzliche Parameter oder etwas anderes hinzufügen könnte, um das Passwort automatisch einzugeben, damit die Funktion nicht nach dem Passwort fragen muss.
Das gewünschte Ergebnis ist, dass die Funktion cloneDB() ausgeführt wird, ohne nach einem Passwort zu fragen.
您可以将密码直接放在命令行中,紧跟在
-p
之后您也不能将输出重定向放在参数列表中。那是shell语法,而不是命令参数。您可以使用
subprocess.run()
的stdout
选项来重定向其输出。