Найти - Пользователи
Полная версия: Вызов процедур в MS SQL из Python
Начало » Базы данных » Вызов процедур в MS SQL из Python
1
Challenger
Всем здравия!

Возникла проблема: не могу получить результат от хранимых процедур в MS SQL.
Т. е. подключение проходит норм, обычные запросы обрабатываются, а результата выполненной процедуры получить не могу…

Пробовал pyodbc и pymssql.

import pyodbc

conn = pyodbc.connect("DRIVER={FreeTDS};SERVER=sql_srv_name;UID=login;PWD=pass;DATABASE=web_db")
curs = conn.cursor()
result = curs.execute("EXEC proc_name @param1='string1', @param2=123")

print result.fetchall() # Результат []
print result.fetchone() # Результат None
Есть ещё вариант сделать именованные переменные в ответы, но результат тот же…
sqlcmd = """
DECLARE @res INT
EXEC proc_name @param1='string1', @param2=123, @res OUT
SELECT @res
"""

res = conn.execute_query(sqlcmd)
Кто решал подобную задачу, отпишитесь плиз как именно. Буду премного благодарен!:)
Борисенков Сергей
Если под Windows попробуйте adodbapi:
import adodbapi
connStrSQLServer = r"Provider=SQLOLEDB.1; Integrated Security=SSPI; Initial Catalog=%s;Data Source=%s" %('DB', 'server')
conn=adodbapi.connect(connStrSQLServer)
crsr=conn.cursor()
crsr.execute("execute [dbo].[HGetDayData] @D1 = N'02-21-2011', @D2 = N'02-22-2011',\
@ID = 506, @Type = 1, @IsPnt = 0")
print crsr.fetchall()
Challenger
Борисенков Сергей, спасибо! Примерно так оно и заработало :)

import pyodbc

conn = pyodbc.connect("DRIVER={FreeTDS};SERVER=sql_srv_name;UID=login;PWD=pass;DATABASE=web_db")
curs = conn.cursor()

print curs.execute("exec dbo.inet_sp_proc_name 'param1', 'param2'").fetchone() # разраб. MSSQL'я подсказал.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB