Emitowane są zdarzenia na poziomie tabeli before_create/after_create (ale nie na poziomie metadanych). musisz upewnić się, że wszystko, co dzieje się w twoim skrypcie env.py, ostatecznie wiąże się z konfiguracją tych detektorów zdarzeń.
Kod, który tu masz, wygląda na podejrzanego:
event.listen(Session.__table__, 'after_create', update_function)
event.listen(Session.__table__, 'after_create', update_trigger)
Session.__table__
tutaj byłaby tylko jedna Table
przykład i to prawdopodobnie nie jest to, co można zobaczyć w skrypcie alembika. Alembik create_table
polecenie tworzy Table
lokalnie i po prostu uruchamia na nim tworzenie, więc musisz globalnie słuchać wszystkich obiektów tabeli:
from sqlalchemy import Table
event.listen(Table, 'after_create', update_function)
event.listen(Table, 'after_create', update_trigger)
jeśli te zdarzenia dotyczą tylko tej jednej konkretnej tabeli, nie użyjesz żadnych zdarzeń, po prostu umieścisz DDL() dla tych wyzwalaczy bezpośrednio w skrypcie migracji, zaraz po wywołaniu create_table()
.