PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie bringe ich Destillierkolben dazu, benutzerdefinierte DDL auf after_create auszugeben?

Die Ereignisse before_create/after_create auf Tabellenebene werden ausgegeben (nur nicht die auf Metadatenebene). Sie müssen sicherstellen, dass alles, was in Ihrem env.py-Skript passiert, letztendlich die Einrichtung dieser Ereignis-Listener beinhaltet.

Der Code, den Sie hier haben, sieht etwas verdächtig aus:

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

Session.__table__ hier wäre nur eine einzelne Table Beispiel und das ist wahrscheinlich nicht das, was Sie in der Destillierschrift sehen würden. Der Destillierkolben create_table Befehl erstellt eine Table lokal und führt nur ein create darauf aus, also müssten Sie global auf alle Table-Objekte hören:

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

Wenn diese Ereignisse jedoch nur für diese eine bestimmte Tabelle gelten, würden Sie keine Ereignisse verwenden, Sie würden einfach die DDL() für diese Trigger direkt in Ihr Migrationsskript einfügen, direkt nachdem es create_table() .