I added some custom DDL to a table definition as follows:
event.listen( Observation.__table__, 'after_create', DDL( 'alter table observation add constraint observation_best ...' ) )
...but it wasn't firing, not even an exception when I deliberately misspelled the table name ;-)
Tracked it down to this class I use to allow one schema to be managed by multiple python packages:
This line in particular:
It appears that call isn't carrying the event handlers across to the table created in the new metadata object. For my use case, it needs to, but I appreciate my use case may well be a bit of an edge case.