0

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が初めてなので、答えは簡単だと確信していますが、これを機能させるために非常に多くのバリエーションを試しましたが、これを理解することはできません.

4

1 に答える 1

1

問題の正確な原因はわかりませんが、上記のコードは次の後に機能するようになりました。

  1. Windows の PATH 環境設定をリセットして、PC が起動するたびに mysqldump へのパスが追加されるようにします。
  2. PC を再起動しました (Python/MySQL が再起動され、PATH 環境設定が確実に正しいことを確認するため)。

問題は解決されたように見えますが、これは少し奇妙です。.sql ファイルが作成されたが空だったという事実は、mysqldump が Python によって実行されたことを示しています。Python で実行したときに出力ファイルが空だったのに対し、CMD プロンプトから同じ mysqldump コマンドを実行してエクスポートが成功した理由はわかりません。

于 2009-12-30T10:15:07.860 に答える