Излъчват се събития на ниво таблица before_create/after_create (само не тези на ниво метаданни). трябва да се уверите, че каквото и да се случи във вашия скрипт env.py в крайна сметка включва тези слушатели на събития, които са настроени.
Кодът, който имате тук, изглежда малко подозрителен:
event.listen(Session.__table__, 'after_create', update_function)
event.listen(Session.__table__, 'after_create', update_trigger)
Session.__table__
тук ще има само една Table
пример и това вероятно не е това, което ще видите в алембичния скрипт. Alembic create_table
командата създава Table
локално и просто изпълнява създаване върху него, така че ще трябва да слушате всички обекти на таблица глобално:
from sqlalchemy import Table
event.listen(Table, 'after_create', update_function)
event.listen(Table, 'after_create', update_trigger)
ако обаче тези събития са само за тази конкретна таблица, тогава не бихте използвали никакви събития, просто бихте поставили DDL() за тези тригери директно във вашия скрипт за мигриране, точно след мястото, където извиква create_table()
.