Python Academy · Lektion

Forespørgsler med Session

Læs og filtrér data

Lektion 3 af 413 trin

Forespørgsler med Session er en gratis Python Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Python Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Python Academy-kurset indeholder 4 lektioner i alt.

Session

ORM'en udfører alt sit arbejde gennem en Session. Den håndterer en arbejdsenhed: holder styr på nye, ændrede og slettede objekter og kommunikerer 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)

Tilføjelse af objekter

session.add() gør et nyt objekt klar. Intet skrives til databasen, før du kalder commit().

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

Gennemførelse af ændringer

session.commit() skriver ventende ændringer til databasen og gennemfører transaktionen, så ændringerne bliver permanente.

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

Forespørgsler med select()

Moderne SQLAlchemy læser data med select(), som udføres gennem sessionen. scalars() returnerer modelinstanser.

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

Hent alle rækker

session.scalars(select(User)).all() returnerer en liste med alle User-objekter 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')

Filtrering med where()

Tilføj en where()-betingelse for at filtrere. Sammenlign en mappet kolonne med en almindelig 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')

Hent ét objekt

session.scalars(stmt).first() returnerer det første resultat eller None. one() forventer præcis én række og udløser en fejl ellers.

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

Opslag efter primærnøgle

session.get(User, 1) er den hurtigste måde at hente et enkelt objekt på ud fra dets primærnøgle.

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

Sortering af resultater

Kæd order_by() sammen med forespørgslen for at sortere. Brug .desc() på en kolonne for faldende rækkefølge.

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

Opdatering af et objekt

Ændr en attribut på et indlæst objekt, og kald derefter commit(). Sessionen registrerer ændringen og udfører en UPDATE.

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

Sletning af et objekt

session.delete(obj) markerer et objekt til sletning. DELETE udføres ved den næste gennemførelse.

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

Hurtig kontrol

Test din viden om sessioner.

Opsummering

Du har lært at læse og ændre data gennem Session.

  • Session holder styr på din arbejdsenhed
  • add() gør objekter klar, og commit() gemmer dem permanent
  • select() + scalars() læser objekter, og where() filtrerer
  • session.get() henter efter primærnøgle; redigeringer og delete() anvendes ved gennemførelse
Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
76
Lektioner
320

Ofte stillede spørgsmål

Er lektionen “Forespørgsler med Session” gratis?

Ja — hele teksten til “Forespørgsler med Session” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Python Academy-kurset, skal du opgradere til CoddyKit PRO. Python Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Forespørgsler med Session”?

Læs og filtrér data Du øver dig i Python Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Python Academy?

Der kræves ingen tidligere erfaring. Python Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Forespørgsler med Session”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Python Academy-lektion?

Ja. Alle Python Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. SQLAlchemy Core kontra ORM
  2. Definition af modeller
  3. Forespørgsler med Session
  4. Relationer og joins
← Tilbage til Python Academy