sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo consigo que Alembic emita DDL personalizado en after_create?

Se emiten los eventos de nivel de tabla before_create/after_create (pero no los de nivel de metadatos). debe asegurarse de que lo que suceda en su secuencia de comandos env.py involucre en última instancia la configuración de esos detectores de eventos.

El código que tienes aquí parece un poco sospechoso:

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

Session.__table__ aquí sería solo una sola Table ejemplo y eso probablemente no sea lo que verías en el guión del alambique. El alambique create_table El comando crea una Table localmente y solo ejecuta una creación en él, por lo que deberá escuchar todos los objetos de la tabla globalmente:

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

Sin embargo, si estos eventos son solo para esta tabla específica, entonces no usaría ningún evento, simplemente colocaría el DDL() para esos disparadores directamente en su secuencia de comandos de migración, justo después de donde llama a create_table() .