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 будет прилетать по мере буферизации, не ждать конца процедуры.