我尝试使用以下代码连接到SQL服务器,我收到错误无效的参数。我试图从sql文件中读取并使用sqlcmd在popen创建的会话上运行查询。
我的SQL文件包含此代码 -
select @@version;
GO
这是我的python代码,用于建立连接并运行命令。我得到了#34; [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的新手,因此我不确定这是我的代码或stdin工作方式的问题。
我能够在命令提示符下使用sqlcmd实用程序运行命令。我使用sqlcmd for sql 2005
答案 0 :(得分:1)
试试这个(添加 shell = True ):
session = Popen(connection_string, stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=True)
或者您可以将sqlcmd.exe的显式路径添加到字符串...