0

call メソッドを使用して SQL ダンプをロードしています。

 call(["psql", "-U", "user", "name", "<", "pathtofile"])

これは、postgres に直接ログインし、"<" と pathtofile を無視しています。

 psql: warning: extra command-line argument "<" ignored
4

2 に答える 2

2

stdinリダイレクトが必要な場合は、キーワード引数を使用します。

with open("pathtofile", "rb") as f:
    call(["psql", "-U", "user", "name"], stdin=f)
于 2013-11-03T04:48:32.003 に答える
1

これに変更してみてください:

 call(["psql", "-U", "user", "name", "<", "pathtofile"], shell=True)
                                                       ^^^^^^^^^^^^

「<」は入力リダイレクト演算子であり、シェルによって解釈される必要があります。と言わないと、 に引数としてshell=True渡されて、どうすればよいかわかりません。psqlpsql

編集:一般に、@falsetru が提案したのはより良いアプローチです。任意の文字列をシェルに渡すことは危険な場合があるためです。ただし、シェル操作を使用する必要shell=Trueがある場合は、それを行う方法です。

于 2013-11-03T04:48:53.423 に答える