Migracja modeli FLASK do bazy
To jest złoty, atomowy, bezpieczny workflow, kiedy:
- modele się zmieniły,
- baza była modyfikowana ręcznie,
- migracje są niespójne,
- chcesz wrócić do pełnej synchronizacji bez walki z błędami.
Schemat:
flask db stamp head
flask db migrate -m "aktualizacja modeli i zmian"
flask db upgrade
jest idealny w takich sytuacjach.
🔍 Dlaczego to działa tak dobrze?
1. flask db stamp head
Mówisz Alembicowi:
„Uznaj, że baza jest już na najnowszej wersji migracji — niczego nie wykonuj.”
To resetuje stan migracji bez dotykania struktury bazy.
2. flask db migrate
Alembic patrzy na:
- aktualną bazę,
- aktualne modele SQLAlchemy,
i generuje migrację, która wyrównuje różnice.
To jest moment, w którym:
- usuwa zbędne kolumny,
- dodaje brakujące,
- poprawia typy,
- usuwa/odtwarza FK,
- synchronizuje indeksy.
3. flask db upgrade
Wykonuje nową migrację i od tego momentu:
- baza = modele,
- migracje = aktualny stan,
- wszystko jest spójne.
🧠 Kiedy ten workflow jest najlepszy?
- po ręcznym grzebaniu w SQL,
- po usunięciu relacji z modeli,
- po dodaniu kolumn ręcznie,
- gdy migracje są popsute lub niespójne,
- gdy masz błędy typu:
- „duplicate column”
- „cannot drop index”
- „foreign key constraint fails”
- „table already exists”
- „column already exists”
To jest najczystszy sposób na przywrócenie porządku.
🔥 Pro tip
Jeśli pracujesz dużo z modelami i migracjami, to workflow:
flask db stamp head
flask db migrate
flask db upgrade
jest świetny po każdej większej refaktoryzacji modeli, bo:
- nie musisz ręcznie naprawiać migracji,
- nie musisz walczyć z FK,
- nie musisz usuwać tabel,
- nie musisz ręcznie edytować SQL.