Vai al contenuto

SafeOps DB Migrations (Alembic/Flask-Migrate)

Stato attuale

  • Migrations inizializzate in migrations/
  • Baseline creata: ffd6f56f8db2

Primo allineamento su DB già esistente

Su ambienti dove le tabelle esistono già (create con db.create_all()):

cd /home/safeops/safeops
/root/.pyenv/versions/safeops/bin/flask --app app db stamp ffd6f56f8db2

Questo non modifica le tabelle: marca solo la baseline come applicata.

Workflow da ora in poi

  1. Modifica modelli SQLAlchemy.
  2. Genera migration:
    /root/.pyenv/versions/safeops/bin/flask --app app db migrate -m "descrizione"
    
  3. Applica migration:
    /root/.pyenv/versions/safeops/bin/flask --app app db upgrade
    

Comandi utili

# storico revisioni
/root/.pyenv/versions/safeops/bin/flask --app app db history

# revisione attuale del DB
/root/.pyenv/versions/safeops/bin/flask --app app db current

# downgrade di una revisione
/root/.pyenv/versions/safeops/bin/flask --app app db downgrade -1

# upgrade su DB default + tutti i tenant attivi con db_uri (tenant_registry)
/root/.pyenv/versions/safeops/bin/flask --app app upgrade_all_tenants

# solo preview target
/root/.pyenv/versions/safeops/bin/flask --app app upgrade_all_tenants --dry-run

# upgrade singolo tenant (o __default__)
/root/.pyenv/versions/safeops/bin/flask --app app upgrade_one_tenant tenant_acme

# stato revisione alembic su tutti i tenant
/root/.pyenv/versions/safeops/bin/flask --app app status_all_tenants

Produzione consigliata

Imposta in .env:

DB_AUTO_CREATE=false
Così l'app non esegue db.create_all() automaticamente e lo schema è gestito solo da migration.