Опитвам се да се свържа с SQL сървър, използвайки кода по-долу. Получавам невалиден аргумент за грешка. Опитвам се да чета от sql файл и изпълнявам заявката в сесията, създадена от popen с помощта на sqlcmd.
Моят 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, следователно не съм сигурен, че това е проблемът с моя код или начина, по който работи stdin.
Мога да изпълня команда с помощта на помощната програма sqlcmd в командния ред. Използвам sqlcmd за sql 2005