SQLAlchemy ·
Models ·
Queries ·
Relationships ·
Flask-Migrate ·
CRUD
Flask arbeitet mit SQLAlchemy als ORM für die Datenbankanbindung. Diese Cheatsheet fasst die grundlegenden Konzepte für Models, Queries, Beziehungen und Migrationen zusammen.
SQLAlchemy ist das ORM (Object-Relational Mapper) für Flask. Es abstrahiert die Datenbankzugriffe und ermöglicht die Arbeit mit Python-Objekten statt SQL.
SQLALCHEMY_TRACK_MODIFICATIONS = False für bessere Performance.
Models sind Python-Klassen, die Datenbanktabellen repräsentieren. Jede Klasse erbt von db.Model, Attribute werden als db.Column definiert.
| Typ | Beschreibung |
|---|---|
| db.Integer | Ganzzahl |
| db.String(length) | Zeichenkette (VARCHAR) |
| db.Text | Langer Text |
| db.Boolean | Wahrheitswert |
| db.DateTime | Datum und Uhrzeit |
| db.Date | Datum |
| db.Float | Gleitkommazahl |
| db.JSON | JSON-Daten (PostgreSQL/MySQL) |
db.relationship() für Beziehungen zwischen Models (siehe nächste Karte). __repr__ ist hilfreich für Debugging in der Shell.
Queries werden über das query-Attribut des Models ausgeführt. Sie können filtern, sortieren, begrenzen und verknüpfen.
| Methode | Beschreibung |
|---|---|
| all() | Alle Treffer als Liste |
| first() | Ersten Treffer oder None |
| first_or_404() | Ersten Treffer oder 404-Fehler |
| get(id) | Eintrag nach Primärschlüssel |
| get_or_404(id) | Eintrag oder 404-Fehler |
| count() | Anzahl der Treffer |
| order_by() | Sortierung |
| limit() | Anzahl der Ergebnisse begrenzen |
| offset() | Ergebnisse überspringen (Paginierung) |
first_or_404() und get_or_404() in View-Funktionen, um automatisch einen 404-Fehler zu werfen, wenn der Eintrag nicht existiert.
Beziehungen verbinden Tabellen miteinander. SQLAlchemy unterstützt One-to-Many, Many-to-One, One-to-One und Many-to-Many.
lazy='dynamic' gibt einen Query-Objekt zurück, das weiter gefiltert werden kann (z.B. user.posts.filter_by(title='...')). Ohne lazy wird die Liste direkt geladen.
Flask-Migrate ist eine Erweiterung für SQLAlchemy, die Datenbank-Migrationen ermöglicht – basierend auf Alembic.
migrations/versions/, bevor Sie upgrade ausführen – besonders bei komplexen Änderungen oder Datenbank-Systemen.
CRUD-Operationen sind die Grundoperationen für Datenbankzugriffe: Create, Read, Update, Delete. Alle Änderungen werden über die Session gesteuert.
db.session.commit() nach allen Änderungen. Bei Fehlern können Sie db.session.rollback() verwenden, um die Änderungen rückgängig zu machen.
SQLALCHEMY
db.Model
query
relationship
flask db
session
db.session.add(obj) ·
db.session.commit() ·
Model.query.filter_by(...).first()