Abfragen mit der Session
Daten lesen und filtern
Abfragen mit der Session ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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.
Die Session
Das ORM erledigt seine gesamte Arbeit über eine Session. Sie verwaltet eine Arbeitseinheit: Sie verfolgt neue, geänderte und gelöschte Objekte und kommuniziert mit der Datenbank.
from sqlalchemy import create_engine
from sqlalchemy.orm import Session
engine = create_engine('sqlite:///:memory:')
with Session(engine) as session:
print('Session open:', session)Objekte hinzufügen
session.add() merkt ein neues Objekt vor. Nichts wird in die Datenbank geschrieben, bis Sie commit() ausführen.
from sqlalchemy.orm import Session
# session.add(user) stages it
# session.commit() writes it
print('add stages, commit saves')Änderungen festschreiben
session.commit() schreibt ausstehende Änderungen in die Datenbank und bestätigt die Transaktion, sodass sie dauerhaft gespeichert werden.
# with Session(engine) as session:
# session.add(User(name='Alice'))
# session.commit()
print('commit persists the work')Abfragen mit select()
Modernes SQLAlchemy liest Daten mit select(), das über die Session ausgeführt wird. scalars() gibt Modellinstanzen zurück.
from sqlalchemy import select
# stmt = select(User)
# users = session.scalars(stmt).all()
print('select(User) then scalars().all()')Alle Zeilen abrufen
session.scalars(select(User)).all() gibt eine Liste mit jedem User-Objekt in der Tabelle zurück.
from sqlalchemy import select
# all_users = session.scalars(select(User)).all()
# for u in all_users:
# print(u.name)
print('all() returns a list of objects')Mit where() filtern
Fügen Sie eine where()-Klausel hinzu, um zu filtern. Vergleichen Sie eine zugeordnete Spalte mit einem normalen Python-Operator.
from sqlalchemy import select
# stmt = select(User).where(User.age > 28)
# adults = session.scalars(stmt).all()
print('where(User.age > 28) filters rows')Ein Objekt abrufen
session.scalars(stmt).first() gibt den ersten Treffer oder None zurück. one() erwartet genau eine Zeile und löst andernfalls eine Ausnahme aus.
from sqlalchemy import select
# stmt = select(User).where(User.name == 'Alice')
# user = session.scalars(stmt).first()
print('first() = first match or None')Suche nach Primärschlüssel
session.get(User, 1) ist der schnellste Weg, ein einzelnes Objekt über seinen Primärschlüssel abzurufen.
# user = session.get(User, 1)
# print(user.name)
print('session.get(Model, pk) fetches by id')Ergebnisse sortieren
Verketten Sie order_by(), um zu sortieren. Verwenden Sie .desc() für eine absteigende Sortierung.
from sqlalchemy import select
# stmt = select(User).order_by(User.age.desc())
# sorted_users = session.scalars(stmt).all()
print('order_by(User.age.desc()) sorts results')Ein Objekt aktualisieren
Ändern Sie ein Attribut eines geladenen Objekts und führen Sie anschließend commit() aus. Die Session erkennt die Änderung und führt ein UPDATE aus.
# user = session.get(User, 1)
# user.name = 'Alicia'
# session.commit() # auto UPDATE
print('Edit attribute, then commit')Ein Objekt löschen
session.delete(obj) markiert ein Objekt zum Löschen. Das DELETE wird beim nächsten Commit ausgeführt.
# user = session.get(User, 1)
# session.delete(user)
# session.commit() # row removed
print('delete(obj) then commit removes the row')Kurzer Test
Testen Sie Ihr Wissen über Sessions.
Zusammenfassung
Sie haben gelernt, Daten über die Session zu lesen und zu ändern.
- Die
Sessionverfolgt Ihre Arbeitseinheit add()merkt Änderungen vor,commit()speichert sie dauerhaftselect()+scalars()lesen Objekte;where()filtert siesession.get()ruft Objekte über den Primärschlüssel ab; Änderungen unddelete()werden beim Commit angewendet
Häufig gestellte Fragen
Ist die Lektion „Abfragen mit der Session“ kostenlos?
Ja — der vollständige Text von „Abfragen mit der Session“ 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 „Abfragen mit der Session“?
Daten lesen und filtern 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 3 von 4.
Wie lange dauert die Lektion „Abfragen mit der Session“?
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
- SQLAlchemy Core vs. ORM
- Modelle definieren
- Abfragen mit der Session
- Beziehungen und Joins