2009-12-30 74 views
0

我在使用subprocess.call使用mysqldump導出數據庫時遇到了一些問題。我正在使用安裝在Windows 7上的Python 3.1。當使用mysqldump嘗試數據庫導出時,是什麼導致subprocess.call輸出空白文件?

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中創建空白文件。

我試圖讓蟒蛇打印命令,所以我可以通過使用命令提示符測試:

print(subprocess.list2cmdline(params)); 

如果我粘貼輸出到CMD提示符並執行它,一切工作正常。

任何想法?

我是新來的Python,所以我相信答案很簡單,但我已經嘗試了很多變體來獲得這個工作,我只是無法弄清楚這一點。

回答

0

我不確定究竟是什麼引起的問題,但上面的代碼現在工作後:

  1. 我PATH環境在Windows中設置 ,以確保道路重置 mysqldump的是,每次添加的PC 靴子。
  2. 我重新啓動了PC(確保 Python/MySQL已重新啓動,並且PATH 環境設置肯定是 正確)。

現在問題似乎得到解決,這有點奇怪。 .sql文件被創建但是爲空的事實表明mysqldump是由Python執行的。我不確定爲什麼輸出文件在被Python執行時爲空,而不是從提供成功導出的CMD提示符執行相同的mysqldump命令。

相關問題