PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como faço para que o alambique emita DDL personalizado no after_create?


Os eventos de nível de tabela before_create/after_create são emitidos (mas não os de nível de metadados). você precisa ter certeza de que tudo o que acontece em seu script env.py envolve a configuração desses ouvintes de eventos.

O código que você tem aqui parece um pouco suspeito:
event.listen(Session.__table__, 'after_create', update_function)
event.listen(Session.__table__, 'after_create', update_trigger)

Session.__table__ aqui seria apenas uma única Table instância e isso provavelmente não é o que você veria no script do alambique. O alambique create_table comando cria uma Table localmente e apenas executa um create nele, então você precisa ouvir todos os objetos Table globalmente:
from sqlalchemy import Table
event.listen(Table, 'after_create', update_function)
event.listen(Table, 'after_create', update_trigger)

se esses eventos forem apenas para esta tabela específica, você não usaria nenhum evento, bastaria colocar o DDL() para esses gatilhos diretamente no seu script de migração, logo após onde ele chama create_table() .