私はPythonを初めて使い、何年もLinuxを使用していないので、どこが絡まっているのか分かりません。私はPopenを使用してUbuntuのMySQLでSQLファイルを実行しようとしています。ここでpopenとmysqlに関するPythonの問題
は、関連するコードです:
command = ['mysql', '-uUSER', '-pPWD','-h192.168.1.132', '--database=dbName', '<', './1477597236_foo.sql' ]
print("command is: "+subprocess.list2cmdline(command))
proc = subprocess.Popen(
command, stderr=subprocess.PIPE, stdout=subprocess.PIPE, cwd='.'
)
これからの出力は、持っていた実行「のmysql --help」の場合と同じです。私にとって不思議なことは、もし私がsubprocess.list2cmdlineでコマンド出力を取り出してそれを直接実行すれば、それは完全に動作するということです。また、'< file.sql'
を'-e select * from foo'
に置き換えると、それが実行されます。したがって、'<'
とファイルが原因で問題が発生しています。私は問題の原因を知っていますが、これまでに試したことはありません。
TIA、クレイグ
最後に、 'subprocess'を使用しないでください。http://stackoverflow.com/questions/372885/how-do-i-connect-to-a-mysql-database-in-python – mgilson
典型的な私:大きな画像を見下ろす、低レベルで答える。それでも私の答えは、入力リダイレクションがSQLやその他のコマンドで必要となるケースをカバーしています。いい視点ね。 –
私はいくつかの問題を抱えていましたが、Jean-FrançoisFabreの答えは私を正しい方向に導いてくれました。皆さんありがとう! –