PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment puis-je faire en sorte qu'alambic émette un DDL personnalisé sur after_create ?

Les événements before_create/after_create au niveau de la table sont émis (mais pas ceux au niveau des métadonnées). vous devez vous assurer que tout ce qui se passe dans votre script env.py implique finalement la configuration de ces écouteurs d'événement.

Le code que vous avez ici semble un peu suspect :

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

Session.__table__ ici serait juste un seul Table exemple et ce n'est probablement pas ce que vous verriez dans le script d'alambic. L'alambic create_table la commande crée une Table localement et exécute simplement une création dessus, vous devez donc écouter tous les objets Table globalement :

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

si ces événements ne concernent que cette table spécifique, vous n'utiliseriez aucun événement, vous placeriez simplement le DDL() pour ces déclencheurs directement dans votre script de migration, juste après qu'il appelle create_table() .