call メソッドを使用して SQL ダンプをロードしています。
call(["psql", "-U", "user", "name", "<", "pathtofile"])
これは、postgres に直接ログインし、"<" と pathtofile を無視しています。
psql: warning: extra command-line argument "<" ignored
call メソッドを使用して SQL ダンプをロードしています。
call(["psql", "-U", "user", "name", "<", "pathtofile"])
これは、postgres に直接ログインし、"<" と pathtofile を無視しています。
psql: warning: extra command-line argument "<" ignored
stdin
リダイレクトが必要な場合は、キーワード引数を使用します。
with open("pathtofile", "rb") as f:
call(["psql", "-U", "user", "name"], stdin=f)
これに変更してみてください:
call(["psql", "-U", "user", "name", "<", "pathtofile"], shell=True)
^^^^^^^^^^^^
「<」は入力リダイレクト演算子であり、シェルによって解釈される必要があります。と言わないと、 に引数としてshell=True
渡されて、どうすればよいかわかりません。psql
psql
編集:一般に、@falsetru が提案したのはより良いアプローチです。任意の文字列をシェルに渡すことは危険な場合があるためです。ただし、シェル操作を使用する必要shell=True
がある場合は、それを行う方法です。