Bootcamp i backendutveckling med FastAPI · Lektion

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.

Lektion 4 av 413 steg

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 alembic

Koppla 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.metadata

Ange 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 head

Rulla 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 -1

Mental 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 head och återställde dem med downgrade.
  • Följde bästa praxis för granskning och ordningsföljd för migreringar.
Gratis att börja

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

  1. Grunderna i SQLAlchemy ORM
  2. Ansluta FastAPI till PostgreSQL
  3. CRUD-operationer med SQLAlchemy
  4. Databasmigreringar med Alembic
← Tillbaka till Bootcamp i backendutveckling med FastAPI