0Pricing
Python Academy · Lektion

SQLAlchemy Core vs. ORM

Die beiden Ebenen verstehen

SQLAlchemy Core vs. ORM ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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.

Was ist SQLAlchemy?

SQLAlchemy ist das beliebteste Python-Toolkit für die Arbeit mit relationalen Datenbanken. Es bietet zwei Ebenen: Core und das ORM.

Sie installieren es mit pip install sqlalchemy.

from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
print('Engine:', engine)

Die Engine

Beide Ebenen beginnen mit einer Engine, die mit create_engine() erstellt wird. Sie verwaltet den Verbindungspool und weiß mithilfe einer URL, wie sie mit Ihrer konkreten Datenbank kommunizieren muss.

from sqlalchemy import create_engine
engine = create_engine('sqlite:///app.db')
print('Dialect:', engine.dialect.name)

Die beiden Ebenen

Core ist ein Toolkit für SQL-Ausdrücke: Sie erstellen Abfragen, die SQL sehr eng entsprechen.

Das ORM baut auf Core auf und ordnet Python-Klassen Tabellen zu, sodass Sie mit Objekten statt mit Zeilen arbeiten.

# Core: think in tables and SQL expressions
# ORM: think in Python classes and objects
print('Core = SQL toolkit, ORM = object mapping')

Core: Eine Tabelle definieren

In Core beschreiben Sie Tabellen ausdrücklich mit den Objekten Table und MetaData.

from sqlalchemy import MetaData, Table, Column, Integer, String
metadata = MetaData()
users = Table('users', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String))
print('Table defined:', users.name)

Core: Eine Abfrage erstellen

Core erstellt Abfragen mit Python-Ausdrücken wie select(), die direkt in SQL übersetzt werden.

from sqlalchemy import MetaData, Table, Column, Integer, String, select
metadata = MetaData()
users = Table('users', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String))
stmt = select(users).where(users.c.name == 'Alice')
print(stmt)

ORM: Eine gemappte Klasse

Im ORM repräsentiert eine Python-Klasse eine Tabelle. Jedes Attribut wird einer Spalte zugeordnet. Sie fragen Objekte ab und speichern sie, nicht rohe Zeilen.

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]
print('Mapped class:', User.__tablename__)

Wann Sie Core verwenden sollten

Core eignet sich, wenn Sie genaue Kontrolle über das konkrete SQL benötigen, umfangreiche Datenverarbeitung durchführen oder komplexe Reporting-Abfragen ausführen, bei denen Objekte zusätzlichen Aufwand verursachen.

# Core is great for:
# - bulk inserts/updates
# - complex analytical queries
# - close control over generated SQL
print('Core: control and performance')

Wann Sie das ORM verwenden sollten

Das ORM eignet sich für typischen Anwendungscode: Sie modellieren Geschäftsentitäten als Klassen, erhalten Änderungsverfolgung und schreiben weniger Boilerplate-Code.

# ORM is great for:
# - application domain models
# - automatic change tracking
# - relationships between objects
print('ORM: productivity and clarity')

Beide verwenden dieselbe Engine

Da das ORM auf Core aufbaut, verwenden beide dieselbe Engine und denselben Verbindungspool. Sie können sie sogar in einer Anwendung kombinieren.

from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
# Core uses engine.connect()
# ORM uses a Session bound to the same engine
print('One engine powers both layers')

Tabellen erstellen

Mit dem ORM führt Base.metadata.create_all(engine) die CREATE-TABLE-Anweisungen für alle gemappten Klassen aus.

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)
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
print('Tables created')

Eine Ebene auswählen

Die meisten Anwendungen verwenden standardmäßig das ORM für alltägliche Aufgaben und wechseln nur bei seltenen aufwendigen oder stark optimierten Abfragen zu Core. Wenn Sie beide kennen, bleiben Sie flexibel.

# Rule of thumb:
# Start with the ORM. Use Core where you need raw power.
print('Default ORM, escape to Core when needed')

Kurze Überprüfung

Testen Sie Ihr Verständnis der beiden Ebenen.

Zusammenfassung

Sie haben die Architektur von SQLAlchemy kennengelernt.

  • Die Engine bildet über create_engine() die Grundlage für alles
  • Core ist ein Toolkit für SQL-Ausdrücke und bietet Kontrolle und Leistung
  • Das ORM ordnet Klassen Tabellen zu und erleichtert produktiven Anwendungscode
  • Beide verwenden dieselbe Engine und können kombiniert werden

Häufig gestellte Fragen

Ist die Lektion „SQLAlchemy Core vs. ORM“ kostenlos?

Ja — der vollständige Text von „SQLAlchemy Core vs. ORM“ 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 „SQLAlchemy Core vs. ORM“?

Die beiden Ebenen verstehen 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 1 von 4.

Wie lange dauert die Lektion „SQLAlchemy Core vs. ORM“?

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