Databasmigreringar med Alembic
Utveckla ert SQLAlchemy-schema säkert över tid med Alembic: initiera migreringar, autogenerera revisioner och tillämpa eller rulla tillbaka ändringar i ett FastAPI-projekt.
Databasmigreringar med Alembic är en gratis lektion i Bootcamp i backendutveckling med FastAPI på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Bootcamp i backendutveckling med FastAPI, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Bootcamp i backendutveckling med FastAPI innehåller totalt 4 lektioner.
Varför migreringar behövs
Databasschemat förändras när programmet växer: nya kolumner, tabeller och index. Migreringar är versionshanterade, repeterbara skript som utvecklar schemat utan att data går förlorade. Alembic är standardverktyget för SQLAlchemy.
create_all räcker inte
Base.metadata.create_all() skapar tabeller som saknas men ändrar aldrig befintliga tabeller. Det kan inte lägga till en kolumn i en tabell som innehåller data eller spåra historik. Produktion kräver riktiga migreringar.
Installera och initiera
Installera Alembic och skapa dess grundstruktur. Då skapas katalogen alembic/ och filen alembic.ini.
pip install alembic
alembic init alembicKoppla Alembic till era modeller
I alembic/env.py anger ni target_metadata till er SQLAlchemy-Base.metadata så att autogenerate kan jämföra modellerna med det aktuella schemat.
from app.database import Base
from app import models # ensure models are imported
target_metadata = Base.metadataAnge databasens URL
Konfigurera anslutningssträngen. Om ni läser den från en miljövariabel hålls hemligheter borta från källkodshanteringen.
import os
config.set_main_option('sqlalchemy.url', os.environ['DATABASE_URL'])Skapa en revision automatiskt
Alembic jämför era modeller med databasen och skriver ett migreringsskript med skillnaderna.
alembic revision --autogenerate -m 'add email to users'En migrerings anatomi
Varje skript har upgrade() och downgrade(). Upgrade tillämpar ändringen och downgrade återställer den. Granska alltid automatiskt genererad kod innan ni kör den.
def upgrade():
op.add_column('users', sa.Column('email', sa.String(), nullable=True))
def downgrade():
op.drop_column('users', 'email')Tillämpa migreringar
Kör upgrade head för att tillämpa alla väntande migreringar fram till den senaste revisionen.
alembic upgrade headRulla tillbaka
Gå tillbaka en revision med downgrade -1, eller till ett specifikt revisions-ID. Möjligheten att rulla tillbaka är anledningen till att det är viktigt att skriva korrekta downgrade().
alembic downgrade -1Mental modell av revisionskedjan
Migreringar bildar en länkad lista: varje revision registrerar sin down_revision. Alembic följer kedjan för att veta vad som ska tillämpas. Här är principen i vanlig Python.
revisions = [
{'id': 'a1', 'down': None},
{'id': 'b2', 'down': 'a1'},
{'id': 'c3', 'down': 'b2'},
]
order = []
cur = 'c3'
by_id = {r['id']: r for r in revisions}
while cur:
order.append(cur)
cur = by_id[cur]['down']
print(list(reversed(order)))Bästa praxis för migreringar
Håll migreringar säkra:
- Granska automatiskt genererade skript; de missar vissa ändringar (till exempel namnbyten på kolumner).
- Kör migreringar i CI/CD innan koden distribueras.
- Gör tillägg först och ta bort gamla kolumner i en senare version.
- Redigera aldrig en redan tillämpad migrering; skapa en ny.
Snabb kontroll
Varför räcker inte Base.metadata.create_all() för att utveckla ett produktionsschema?
Repetition
Ni har lagt till säker utveckling av databasschemat:
- Initierade Alembic och kopplade det till era modeller och databasens URL.
- Skapade revisioner automatiskt med
upgrade()/downgrade(). - Tillämpade dem med
upgrade headoch återställde dem meddowngrade. - Följde bästa praxis för granskning och ordningsföljd för migreringar.
Lär dig Bootcamp i backendutveckling med FastAPI med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 21
- Lektioner
- 84
Vanliga frågor
Är lektionen ”Databasmigreringar med Alembic” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Bootcamp i backendutveckling med FastAPI, inklusive ”Databasmigreringar med Alembic”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Bootcamp i backendutveckling med FastAPI innehåller totalt 4 lektioner.
Vad lär jag mig i ”Databasmigreringar med Alembic”?
Utveckla ert SQLAlchemy-schema säkert över tid med Alembic: initiera migreringar, autogenerera revisioner och tillämpa eller rulla tillbaka ändringar i ett FastAPI-projekt. Ni övar på Bootcamp i backendutveckling med FastAPI med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Bootcamp i backendutveckling med FastAPI?
Du behöver inga förkunskaper. Utbildningen i Bootcamp i backendutveckling med FastAPI på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Databasmigreringar med Alembic”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Bootcamp i backendutveckling med FastAPI-lektionen?
Ja. Varje Bootcamp i backendutveckling med FastAPI-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Grunderna i SQLAlchemy ORM
- Ansluta FastAPI till PostgreSQL
- CRUD-operationer med SQLAlchemy
- Databasmigreringar med Alembic