Jsou vysílány události na úrovni tabulky before_create/after_create (jen ne na úrovni metadat). musíte se ujistit, že cokoli se stane ve vašem skriptu env.py, nakonec zahrnuje nastavení těchto posluchačů událostí.
Kód, který zde máte, vypadá trochu podezřele:
event.listen(Session.__table__, 'after_create', update_function)
event.listen(Session.__table__, 'after_create', update_trigger)
Session.__table__
zde by byla pouze jedna Table
instance a to pravděpodobně není to, co byste viděli v alembickém skriptu. Alembic create_table
vytvoří Table
lokálně a pouze na něm spustíte create, takže budete muset naslouchat všem objektům tabulky globálně:
from sqlalchemy import Table
event.listen(Table, 'after_create', update_function)
event.listen(Table, 'after_create', update_trigger)
pokud jsou tyto události pouze pro tuto jednu konkrétní tabulku, pak byste nepoužili žádné události, pouze byste vložili DDL() pro tyto spouštěče přímo do vašeho migračního skriptu, hned za to, kde volá create_table()
.