sql >> Database >  >> RDS >> PostgreSQL

Hoe krijg ik alambiek om aangepaste DDL uit te zenden op after_create?

De gebeurtenissen op tabelniveau before_create/after_create worden uitgezonden (alleen niet die op metadataniveau). je moet ervoor zorgen dat wat er ook gebeurt in je env.py-script, uiteindelijk gaat om het instellen van die gebeurtenislisteners.

De code die je hier hebt ziet er een beetje verdacht uit:

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

Session.__table__ hier zou slechts een enkele Table zijn bijvoorbeeld en dat is waarschijnlijk niet wat je zou zien in het alambiekschrift. De alambiek create_table commando maakt een Table lokaal en voert er gewoon een creatie op uit, dus je moet naar alle tabelobjecten globaal luisteren:

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

als deze gebeurtenissen echter alleen voor deze ene specifieke tabel zijn, dan zou je geen gebeurtenissen gebruiken, je zou gewoon de DDL() voor die triggers direct in je migratiescript plaatsen, direct na waar het create_table() .



  1. decoderen in orakel converteren naar postgres

  2. Selecteer de nieuwste MySQL-gegevens maar uniek resort

  3. SYSDATE() Voorbeelden – MySQL

  4. log4net logfout in mysql database loggen