Python Academy · Lektion

Fråga med Session

Läs och filtrera data

Lektion 3 av 413 steg

Fråga med Session är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.

Sessionen

ORM:et utför allt sitt arbete genom en Session. Den hanterar en arbetsenhet: håller reda på nya, ändrade och borttagna objekt och kommunicerar med databasen.

from sqlalchemy import create_engine
from sqlalchemy.orm import Session
engine = create_engine('sqlite:///:memory:')
with Session(engine) as session:
    print('Session open:', session)

Lägga till objekt

session.add() förbereder ett nytt objekt. Inget skrivs till databasen förrän du anropar commit().

from sqlalchemy.orm import Session
# session.add(user) stages it
# session.commit() writes it
print('add stages, commit saves')

Bekräfta ändringar

session.commit() skriver ut väntande ändringar och bekräftar transaktionen, så att ändringarna blir permanenta.

# with Session(engine) as session:
#     session.add(User(name='Alice'))
#     session.commit()
print('commit persists the work')

Fråga med select()

Moderna SQLAlchemy läser data med select(), som körs genom sessionen. scalars() returnerar modellinstanser.

from sqlalchemy import select
# stmt = select(User)
# users = session.scalars(stmt).all()
print('select(User) then scalars().all()')

Hämta alla rader

session.scalars(select(User)).all() returnerar en lista med alla User-objekt i tabellen.

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')

Filtrera med where()

Lägg till en where()-sats för att filtrera. Jämför en mappad kolumn med en vanlig 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')

Hämta ett objekt

session.scalars(stmt).first() returnerar den första träffen eller None. one() förväntar sig exakt en rad och genererar annars ett undantag.

from sqlalchemy import select
# stmt = select(User).where(User.name == 'Alice')
# user = session.scalars(stmt).first()
print('first() = first match or None')

Slå upp med primärnyckel

session.get(User, 1) är det snabbaste sättet att hämta ett enskilt objekt med dess primärnyckel.

# user = session.get(User, 1)
# print(user.name)
print('session.get(Model, pk) fetches by id')

Sortera resultat

Bygg vidare med order_by() för att sortera. Använd .desc() på en kolumn för fallande ordning.

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')

Uppdatera ett objekt

Ändra ett attribut på ett inläst objekt och anropa sedan commit(). Sessionen upptäcker ändringen och skickar en UPDATE.

# user = session.get(User, 1)
# user.name = 'Alicia'
# session.commit()  # auto UPDATE
print('Edit attribute, then commit')

Ta bort ett objekt

session.delete(obj) markerar ett objekt för borttagning. DELETE körs vid nästa commit.

# user = session.get(User, 1)
# session.delete(user)
# session.commit()  # row removed
print('delete(obj) then commit removes the row')

Snabbtest

Testa dina kunskaper om sessioner.

Sammanfattning

Du har lärt dig att läsa och ändra data genom Session.

  • Session håller reda på din arbetsenhet
  • add() förbereder ändringar och commit() sparar dem
  • select() + scalars() läser objekt; where() filtrerar
  • session.get() hämtar med primärnyckel; ändringar och delete() verkställs vid commit
Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
76
Lektioner
320

Vanliga frågor

Är lektionen ”Fråga med Session” gratis?

Ja – hela texten till ”Fråga med Session” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Fråga med Session”?

Läs och filtrera data Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Python Academy?

Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Fråga med Session”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Python Academy-lektionen?

Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. SQLAlchemy Core kontra ORM
  2. Definiera modeller
  3. Fråga med Session
  4. Relationer och joiner
← Tillbaka till Python Academy