sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan får jeg alembic til at udsende tilpasset DDL på after_create?

Tabelniveauet before_create/after_create-hændelser udsendes (bare ikke metadata-niveauet). du skal sikre dig, at hvad der end sker i dit env.py-script i sidste ende involverer de begivenhedslyttere, der konfigureres.

Den kode du har her ser lidt suspekt ud:

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

Session.__table__ her ville bare være en enkelt Table eksempel, og det er sandsynligvis ikke, hvad du ville se i almbic-skriftet. Den alembiske create_table kommandoen opretter en Table lokalt og kører bare en oprettelse på den, så du bliver nødt til at lytte til alle tabelobjekter globalt:

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

hvis disse hændelser dog kun er for denne ene specifikke tabel, så ville du ikke bruge nogen hændelser, du ville bare sætte DDL() for disse triggere direkte i dit migreringsscript, lige efter hvor det kalder create_table() .



  1. Hvorfor frarådes mysql_connect, og hvad er alternativerne?

  2. Konverter tekst til tal i MySQL-forespørgsel

  3. Rails ActiveRecord håndterer en id-kolonne, der ikke er den primære nøgle

  4. Sådan fungerer FROM_UNIXTIME() i MariaDB