-1

Python によって開始された SQL クエリが失敗したかどうかを確認できる必要があります。これまでのところ、私は持っています:

import subprocess
p = subprocess.Popen(['sqlcmd', '-E -m-1 -S 1070854A\AISP -i NewStructures.sql >>process.log'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
print out
print err

しかし、SQLCMD パラメーターは好きではありません。出力は言う

Sqlcmd: '-E -S 1070854A\AISP -i NewStructures.sql': Unknown Option. Enter '-?' for help.

これらのパラメーターは、コマンド ラインに入力するときに機能します。

ありがとう。

4

1 に答える 1

0

'-E -m-1 -S 1070854A\AISP -i NewStructures.sql >>process.log'は 1 つの引数として解釈されるため、このエラーが発生します。これを機能させるには、引数を分割する必要があります。

シェルコマンドでリダイレクトを使用しようとしているように見える場合、次のようなものを使用できます。

import subprocess
with open('process.log', 'ab') as logfile:
    logfile.seek(0, 2)
    p = subprocess.Popen(['sqlcmd', '-E', '-m-1', '-S', '1070854A\AISP', '-i', 'NewStructures.sql'], stdout=logfile, stderr=subprocess.PIPE)
    out, err = p.communicate()

outstdout はファイルにリダイレクトされるため、とにかく空になります。

>またはを使用したリダイレクトは、>>でのみ機能しshell=Trueます。

于 2013-04-23T13:44:34.600 に答える