Задать вопрос
@firstmixon

Как при вызове хранимой процедуры получать значения RAISE NOTICE?

Хочу при вызове хранимой процедуры отчитываться о статусе выполнения, каким образом можно перехватить NOTICE во время выполнения? А не в конце (уже не так актуально).

Для запуска процедуры использую pyodbc.
  • Вопрос задан
  • 280 просмотров
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик + ИИ
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
opium
@opium
Просто люблю качественно работать
pyodbc нотисы из постгреса в норме не пробрасывает — ODBC-прослойка их теряет. Переходи на psycopg2.

С ним всё просто: нотисы копятся в conn.notices уже после execute(). А если хочется ловить в реальном времени — переопредели список:

class Log(list):
    def append(self, item):
        print(item.strip())
        super().append(item)

conn.notices = Log()
cur.execute("CALL my_proc()")


Каждый RAISE NOTICE будет прилетать по мере буферизации, не ждать конца процедуры.
Ответ написан
@sweet0dream
Используй библиотеку psycopg2 вместо pyodbc. Это "родной" драйвер для постгреса который превосходно работает с уведомлениями.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы