Fråga med Session
Läs och filtrera data
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.
Sessionhåller reda på din arbetsenhetadd()förbereder ändringar ochcommit()sparar demselect()+scalars()läser objekt;where()filtrerarsession.get()hämtar med primärnyckel; ändringar ochdelete()verkställs vid commit
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
- SQLAlchemy Core kontra ORM
- Definiera modeller
- Fråga med Session
- Relationer och joiner