import os
import subprocess
cmdline = ['mysql -u"username" -p"password" < query.sql']
p = subprocess.Popen(cmdline,stdout=subprocess.PIPE)
stdout,stderr = p.communicate()
retcode = p.wait()
這是我的代碼連接到mysql並執行query.sql。看起來不錯,但它不起作用,壞事是我根本沒有收到任何錯誤信息。 retcode是1,從標準輸出,stderr我只得到MySQL標準文本「Usage mysql [OPTIONS] [Database] ...」,所以我認爲我的語法是錯誤的。但事實並非如此。我在終端上測試了這行代碼,它工作正常。mysql通過子進程不起作用
python是否有問題通過子進程來執行?我只想要一個簡單的方法來執行這個小的mysql代碼。 謝謝。
如果用戶名和密碼在「」或者只是格式化的問題?並且query.sql在哪裏?它在路上嗎?試試`ls`來確定。可能在-u和用戶名(和密碼) – extraneon 2011-02-12 10:56:06
之間應該有空格,是的,用戶名和密碼應該在「」中。 query.sql與python腳本位於相同的目錄中。 -u和用戶名(和密碼)之間的空格是否重要?我會測試 – SandyBr 2011-02-12 10:59:04