0Pricing
Python Academy · Lektion

Modelle definieren

Klassen Tabellen zuordnen

Modelle definieren ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Modelle werden Tabellen zugeordnet

Im SQLAlchemy-ORM ist ein Modell eine Python-Klasse, die einer Datenbanktabelle zugeordnet ist. Jede Instanz wird zu einer Zeile.

Modelle erben von einer gemeinsamen Base-Klasse.

from sqlalchemy.orm import DeclarativeBase
class Base(DeclarativeBase):
    pass
print('Base class ready')

Das __tablename__

Jedes Modell legt mit __tablename__ den Namen seiner Tabelle fest. SQLAlchemy verwendet diesen Namen beim Erzeugen von SQL.

from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
print(User.__tablename__)

Spalten mit Mapped

Modernes SQLAlchemy deklariert Spalten mit Typannotationen: Mapped[int] und mapped_column(). Die Typannotation legt den Python-Typ fest und liefert Informationen über den Spaltentyp.

from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str]
    age: Mapped[int]
print('User has id, name, age')

Der Primärschlüssel

Kennzeichnen Sie eine Spalte mit primary_key=True als Primärschlüssel. Ganzzahlige Primärschlüssel werden standardmäßig automatisch hochgezählt.

from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class Product(Base):
    __tablename__ = 'products'
    id: Mapped[int] = mapped_column(primary_key=True)
    title: Mapped[str]
print('id is the primary key')

Optionale Spalten

Verwenden Sie Mapped[str | None] oder Optional[str], um NULL-Werte zuzulassen. Ein einfaches Mapped[str] entspricht NOT NULL.

from typing import Optional
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    nickname: Mapped[Optional[str]]
print('nickname can be NULL')

Standardwerte und Eindeutigkeit

mapped_column() akzeptiert Optionen wie unique=True und default=, um Constraints und Ersatzwerte hinzuzufügen.

from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    email: Mapped[str] = mapped_column(unique=True)
    active: Mapped[bool] = mapped_column(default=True)
print('email is unique, active defaults to True')

Länge von Zeichenketten

Für Datenbanken, die dies benötigen, legen Sie die Länge einer Zeichenkette mit mapped_column(String(50)) fest.

from sqlalchemy import String
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str] = mapped_column(String(50))
print('name limited to 50 chars')

Das Schema erstellen

Base.metadata.create_all(engine) erstellt Tabellen für jedes Modell, das von Base erbt.

from sqlalchemy import create_engine
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str]
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
print('Schema created')

Instanzen erstellen

Erstellen Sie eine Zeile, indem Sie das Modell wie ein gewöhnliches Python-Objekt instanziieren und die Spaltenwerte als Schlüsselwortargumente übergeben.

from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str]
u = User(name='Alice')
print(u.name)

Ein __repr__ hinzufügen

Ein benutzerdefiniertes __repr__ erleichtert das Debugging, indem es die Daten des Objekts übersichtlich anzeigt.

from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str]
    def __repr__(self):
        return 'User(name=' + self.name + ')'
print(repr(User(name='Bob')))

Modelle bleiben gewöhnliches Python

Ein Modell ist weiterhin eine gewöhnliche Klasse. Sie können Methoden und Eigenschaften hinzufügen, die mit den Daten des Modells arbeiten, und so Verhalten mit Persistenz verbinden.

from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str]
    def greet(self):
        return 'Hi, ' + self.name
print(User(name='Carol').greet())

Kurze Überprüfung

Testen Sie Ihre Fähigkeiten beim Definieren von Modellen.

Zusammenfassung

Sie haben gelernt, ORM-Modelle zu definieren.

  • Modelle erben von einer DeclarativeBase und legen __tablename__ fest
  • Spalten verwenden Mapped[type] und mapped_column()
  • primary_key, unique und default fügen Constraints hinzu
  • create_all() erstellt die Tabellen

Häufig gestellte Fragen

Ist die Lektion „Modelle definieren“ kostenlos?

Ja — der vollständige Text von „Modelle definieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Modelle definieren“?

Klassen Tabellen zuordnen Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Python Academy zu starten?

Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Modelle definieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?

Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. SQLAlchemy Core vs. ORM
  2. Modelle definieren
  3. Abfragen mit der Session
  4. Beziehungen und Joins
← Zurück zu Python Academy