PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come posso ottenere l'alambicco per emettere DDL personalizzato su after_create?

Vengono emessi gli eventi a livello di tabella before_create/after_create (solo non quelli a livello di metadati). devi assicurarti che qualunque cosa accada nel tuo script env.py alla fine comporti la configurazione di quei listener di eventi.

Il codice che hai qui sembra un po' sospetto:

event.listen(Session.__table__, 'after_create', update_function)
event.listen(Session.__table__, 'after_create', update_trigger)

Session.__table__ qui ci sarebbe solo una singola Table istanza e probabilmente non è quello che vedresti nello script dell'alambicco. L'alambicco create_table comando crea una Table localmente ed esegue solo una creazione su di esso, quindi dovresti ascoltare tutti gli oggetti Table a livello globale:

from sqlalchemy import Table
event.listen(Table, 'after_create', update_function)
event.listen(Table, 'after_create', update_trigger)

se questi eventi sono solo per questa tabella specifica, tuttavia, non utilizzeresti alcun evento, inseriresti semplicemente DDL() per quei trigger direttamente nello script di migrazione, subito dopo dove chiama create_table() .