SQLAlchemy ORM ·
Async Datenbank ·
CRUD-Operationen ·
Alembic ·
Pydantic-Modelle ·
Beziehungen
FastAPI lässt sich hervorragend mit SQLAlchemy und anderen Datenbank-Tools kombinieren. Diese Cheatsheet fasst die wichtigsten Techniken für die Datenbankanbindung zusammen – von ORM-Modellen über asynchrone Queries bis zu Migrationen.
SQLAlchemy ORM ist die Standard-ORM für Python. Mit DeclarativeBase und Type-Hints definieren Sie Datenbanktabellen als Python-Klassen.
Alembic für Migrationen (statt create_all()). Das ermöglicht kontrollierte Schema-Änderungen.
Asynchrone Datenbank ermöglicht nicht-blockierende Datenbankoperationen in FastAPI. Verwenden Sie sqlalchemy.ext.asyncio für async/await-Unterstützung.
aiosqlite, für PostgreSQL asyncpg. Verwenden Sie await session.refresh(user) nach commit() für aktualisierte Daten.
CRUD-Operationen sind die Grundlage jeder Datenbankanwendung – sie ermöglichen das Erstellen, Lesen, Aktualisieren und Löschen von Datensätzen.
exclude_unset=True bei Pydantic-Modellen für Updates – so werden nur die tatsächlich gesendeten Felder aktualisiert.
Alembic ist das offizielle Migrations-Tool für SQLAlchemy. Es ermöglicht kontrollierte Schema-Änderungen und Rollbacks.
alembic revision --autogenerate, um Migrationen automatisch aus Ihren Modellen zu generieren. Prüfen Sie die generierten Dateien immer manuell, bevor Sie sie anwenden.
Pydantic-Modelle dienen als Schnittstelle zwischen API und Datenbank. Sie validieren eingehende Daten und serialisieren ORM-Objekte für Antworten.
model_config = ConfigDict(from_attributes=True) in Response-Modellen, um ORM-Objekte automatisch zu serialisieren – das ersetzt manuelle from_orm-Aufrufe.
Beziehungen ermöglichen das Verknüpfen von Tabellen – One-to-Many (User → Posts) und Many-to-Many (User → Roles) sind häufig.
joinedload() für eager loading (N+1-Problem vermeiden). Für große Datensätze ist selectinload() oft effizienter.
Base
async
CRUD
Alembic
Pydantic
relationship
class User(Base): __tablename__ = "users" ·
async def get_db() -> AsyncGenerator[AsyncSession, None] ·
alembic upgrade head