sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur får jag alembic att avge anpassad DDL på after_create?

Tabellnivån before_create/after_create-händelser sänds ut (bara inte de med metadatanivå). du måste se till att vad som än händer i ditt env.py-skript i slutändan inbegriper att händelseavlyssnare ställs in.

Koden du har här ser lite misstänkt ut:

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

Session.__table__ här skulle bara vara en enda Table instans och det är förmodligen inte vad du skulle se i almbic-skriptet. Den alembiska create_table kommandot skapar en Table lokalt och bara kör en skapa på den, så du måste lyssna på alla tabellobjekt globalt:

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

om dessa händelser endast är för den här specifika tabellen, så skulle du inte använda några händelser, du skulle bara lägga DDL() för dessa utlösare direkt i ditt migreringsskript, direkt efter där det anropar create_table() .



  1. node.js oracledb infogas inte eller uppdateras

  2. Hur man använder kommandon som DROP TABLE etc. inom en lagrad procedur

  3. Hur man laddar data till db från csv med LOAD DATA INFILE i drupal

  4. How to_date() Fungerar i PostgreSQL