什么原因导致subprocess.call在尝试使用mysqldump导出数据库时输出空白文件?

时间:2009-12-30 07:41:21

标签: python subprocess mysqldump

我在使用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的新手,所以我确信答案很简单,但我已经尝试了很多变化来实现这一点,我无法理解这一点。

1 个答案:

答案 0 :(得分:1)

我不确定究竟是什么导致了这个问题,但上面的代码现在适用于:

  1. 我重置了PATH环境设置 在Windows中确保路径 每次在PC上添加mysqldump 靴。
  2. 我重新启动了PC(确保 重启了Python / MySQL和PATH 环境设置肯定 正确的)。
  3. 现在问题似乎得到了解决,这有点奇怪。 .sql文件正在创建但是为空的事实表明mysqldump是由Python执行的。我不确定为什么输出文件在Python执行时是空的,而不是从CMD提示符执行相同的mysqldump命令,只要成功导出。