我在使用subprocess.call使用mysqldump导出数据库时遇到了一些问题。我正在使用Windows 7上安装的Python 3.1。
from time import gmtime, strftime
import subprocess
DumpDir = "c:/apps/sqlbackup/";
DumpFile = "mysqldump-" + strftime("%Y-%m-%d-%H-%M-%S", gmtime()) + ".sql";
params = [r"mysqldump --user root --password=mypassword --force --flush-privileges --compress --comments mydatabase --result-file=" + DumpDir + DumpFile];
subprocess.call(params, shell=True);
上面的代码会导致在DumpDir中创建一个空白文件。
我已经尝试让python打印命令,以便我可以使用以下命令通过CMD提示进行测试:
print(subprocess.list2cmdline(params));
如果我将输出粘贴到CMD提示符并执行它,一切正常。
有什么想法吗?
我是Python的新手,所以我确信答案很简单,但我已经尝试了很多变化来实现这一点,我无法理解这一点。
答案 0 :(得分:1)
我不确定究竟是什么导致了这个问题,但上面的代码现在适用于:
现在问题似乎得到了解决,这有点奇怪。 .sql文件正在创建但是为空的事实表明mysqldump是由Python执行的。我不确定为什么输出文件在Python执行时是空的,而不是从CMD提示符执行相同的mysqldump命令,只要成功导出。