以下のコードを使用して SQL サーバーに接続しようとしていますが、引数が無効であるというエラーが発生します。SQL ファイルから読み取り、sqlcmd を使用して popen によって作成されたセッションでクエリを実行しようとしています。
私のSQLファイルにはこのコードが含まれています-
select @@version;
GO
これは、接続を確立してコマンドを実行するための私の python コードです。「[Errno 22] 無効な引数」が表示されます
import os
import subprocess
from subprocess import Popen, PIPE, STDOUT
def ms_sql_session():
ip_addr = "xxx.xxx.xxx.xxx,1433"
user = 'sa'
password = 'password'
connection_string = 'sqlcmd -S %s -U %s -P %s' %(ip_addr, user, password)
try:
session = Popen(connection_string, stdin=PIPE, stdout=PIPE, stderr=PIPE)
f = open('abc.sql','r')
str_cmd = f.read()
session.stdin.write(str_cmd)
stdout, stderr = session.communicate()
print stdout
print stderr
return True
except Exception, e:
print str(e)
return False
ms_sql_session()
どうすればこのような状況を解消できますか。私はSQLの初心者なので、これが私のコードの問題なのか、標準入力の仕組みの問題なのかわかりません。
コマンド プロンプトで sqlcmd ユーティリティを使用してコマンドを実行できます。私はSQL 2005にsqlcmdを使用しています