powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / не отрабатывает процедуру из python
16 сообщений из 16, страница 1 из 1
не отрабатывает процедуру из python
    #39593234
Serg58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, в чём подвох?

на питоне скрипт вызывает хранимую процедуру:
Код: python
1.
cursor.callproc('UpdateSeance', (12345, 2))



всё ок, никаких ошибок. Но фактически процедура не отрабатывает, она должна у сеанса 12345 изменить тип на 2 (эти параметры и передаю).

Я запускаю профайлер, вижу, что pymssql подключилось и передаёт:
Код: sql
1.
exec UpdateSeance 12345, 2



беру копирую этот код, вставляю его в SQL SMS и исполняю - всё ок, процедура отрабатывает, тип изменяется ?????!!!! Как так то?

При этом всё остальное работает, если обратится к процедурам возвращающим значения - всё в питон возвращается, всё в штатном режиме. А тут не пойму в чём дело.
...
Рейтинг: 0 / 0
не отрабатывает процедуру из python
    #39593237
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Учетки у тебя и питона одинаковые? Права на процедуру "питону" даны?
...
Рейтинг: 0 / 0
не отрабатывает процедуру из python
    #39593248
Кусочек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторчто pymssql подключилось и передаёт

Посмотрите в контексте какой базы происходит вызов.

И еще, требуемая UpdateSeance - у Вас находится в схеме dbo?
...
Рейтинг: 0 / 0
не отрабатывает процедуру из python
    #39593252
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кусочек,

Код: sql
1.
SET NOCOUNT ON;
...
Рейтинг: 0 / 0
не отрабатывает процедуру из python
    #39593293
Кусочек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ШыфлКусочек,

Код: sql
1.
SET NOCOUNT ON;



Если Вы ТС, то - это не контекст базы исполнения.
...
Рейтинг: 0 / 0
не отрабатывает процедуру из python
    #39593295
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кусочек,

он не ТС, но мыслит в правильном направлении
...
Рейтинг: 0 / 0
не отрабатывает процедуру из python
    #39593335
Serg58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CammomileУчетки у тебя и питона одинаковые? Права на процедуру "питону" даны?
да, учётки одинаковые, собственно sa.
Права, соответственно, тоже одинаковые.

КусочекПосмотрите в контексте какой базы происходит вызов.
у меня при подключении указывается база:
Код: python
1.
conn.connect(server, user, password, "БАЗА")


Тем более, "соседние" процедуры, которые делают выгрузку данных - исполняются без проблем, данные возвращают.

КусочекИ еще, требуемая UpdateSeance - у Вас находится в схеме dbo?
да.

Шыфл
Код: sql
1.
SET NOCOUNT ON;


А как мне это поможет?
Данная процедура ни чего не возвращает(мне и не надо), она должна поменять поле(это отразится в совершенно другой программе).
...
Рейтинг: 0 / 0
не отрабатывает процедуру из python
    #39593347
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg58,

авторА как мне это поможет?
Данная процедура ни чего не возвращает(мне и не надо), она должна поменять поле(это отразится в совершенно другой программе).
она у вас может матом ругается.

ну и обычная история поиска второй sp с другим овнером

Код: sql
1.
SELECT * FROM sys.objects WHERE Name = 'UpdateSeance'


сколько записей?
...
Рейтинг: 0 / 0
не отрабатывает процедуру из python
    #39593357
Serg58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKона у вас может матом ругается.
когда я только вчера начал писать скрипт и написал вызов процедуры без параметров - она ругалась матом.
Потом неправильно параметры передал, она тоже ругалась матом.
Потом дошёл до того что никакой ошибки нет, всё выполняется, но фактически не изменяется поле. Запустил профайлер - вижу, что уходит в базу запрос(процитирован в первом сообщении), беру его, выполняю через SMS - всё работает.

То есть я пока ещё сижу в отладчике питона и вижу ошибки.

TaPaKну и обычная история поиска второй sp с другим овнером
Код: sql
1.
SELECT * FROM sys.objects WHERE Name = 'UpdateSeance'


сколько записей?
одна запись.
...
Рейтинг: 0 / 0
не отрабатывает процедуру из python
    #39593381
Serg58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хм...сейчас попробовал вот так переписать, вместо использования callproc(вызов процедуры) обычным запросом:

Код: python
1.
cursor.execute('exec UpdateSeance 12345, 2')


и вот так попробовал:
Код: python
1.
2.
args = (12345, 2)
cursor.execute('exec UpdateSeance %d', args)


никаких ошибок, всё ок.

но не работает даже так. Опять же, копирую эти запросы непосредственно в SMS - всё работает.
...
Рейтинг: 0 / 0
не отрабатывает процедуру из python
    #39593386
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg58,

ну и для нашего спокойствия

авторcursor.execute('exec dbo.UpdateSeance @paramName1 = 12345, @paramName2 = 2')
...
Рейтинг: 0 / 0
не отрабатывает процедуру из python
    #39593395
Serg58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKну и для нашего спокойствия
дык пробовал ;)

вот сейчас ещё раз пробежался:
Код: sql
1.
cursor.execute('exec UpdateSeance @seance = 12345, @type = 2')


Код: sql
1.
cursor.execute('exec dbo.UpdateSeance @seance = 12345, @type = 2')


- выполняются БЕЗ ошибок, но в БД значение не меняется.
Оба варианта через SMS работают верно, значение меняется.

ради интереса выполнил:
Код: sql
1.
cursor.execute('exec dbo.UpdateSeance @seance = 12345, @type1 = 2')


- питон мне выдаёт: "@type1 is not a parameter for procedure..."

если выполнить вот так:
Код: sql
1.
cursor.execute('exec dbo.UpdateSeance')


выдаёт ошибку: "Procedure or function 'UpdateSeance' expects parameter '@seance', which was not supplied."
Параметр 1 обязательный, как раз @seance
...
Рейтинг: 0 / 0
не отрабатывает процедуру из python
    #39593400
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg58,

ну и сейчас окажется что сервер не тот, триггер футболит и т.д.
...
Рейтинг: 0 / 0
не отрабатывает процедуру из python
    #39593404
Serg58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВСЁЁЁ! ;)
заработало)

вот чисто интуитивно решил в конце скрипта дописать:
Код: sql
1.
conn.commit()


и всё работает теперь. Вообще все вышеперечисленные примеры работают и через callproc(вызов процедуры) и и через execute
...
Рейтинг: 0 / 0
не отрабатывает процедуру из python
    #39593410
autocommit,
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Serg58ВСЁЁЁ! ;)
заработало)

вот чисто интуитивно решил в конце скрипта дописать:
Код: sql
1.
conn.commit()


и всё работает теперь. Вообще все вышеперечисленные примеры работают и через callproc(вызов процедуры) и и через execute


https://stackoverflow.com/questions/9419276/calling-a-stored-procedure-python
автор conn = pyodbc.connect(driver = '{SQL Server Native Client 10.0}', server = '(local)', database = 'Inventory', uid = 'sa', pwd = 'p@$$w0rd123',autocommit=True)
...
Рейтинг: 0 / 0
не отрабатывает процедуру из python
    #39593417
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg58ВСЁЁЁ! ;)
заработало)

вот чисто интуитивно решил в конце скрипта дописать:
Код: sql
1.
conn.commit()


и всё работает теперь. Вообще все вышеперечисленные примеры работают и через callproc(вызов процедуры) и и через execute
*facepalm* То есть ты просто не читал доку к своим питоновским коннекторам? Яснопонятно.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / не отрабатывает процедуру из python
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]