Python Academy · Oppitunti

Kyselyt Sessionilla

Lue ja suodata tietoja

Oppitunti 3/413 vaihetta

Kyselyt Sessionilla on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 4 oppituntia.

Session

ORM suorittaa kaiken työnsä Session-olion kautta. Se hallinnoi työyksikköä: seuraa uusia, muuttuneita ja poistettuja olioita sekä kommunikoi tietokannan kanssa.

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

Olioiden lisääminen

session.add() asettaa uuden olion käsiteltäväksi. Mitään ei kirjoiteta tietokantaan, ennen kuin kutsutte commit()-metodia.

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

Muutosten vahvistaminen

session.commit() kirjoittaa odottavat muutokset tietokantaan ja vahvistaa tapahtuman, jolloin muutokset muuttuvat pysyviksi.

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

Kyselyt select()-funktiolla

Moderni SQLAlchemy lukee tietoja select()-funktion avulla, ja kysely suoritetaan istunnon kautta. scalars() palauttaa mallin oliot.

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

Kaikkien rivien hakeminen

session.scalars(select(User)).all() palauttaa luettelon kaikista taulukon User-olioista.

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

Suodattaminen where()-funktiolla

Lisätkää suodattamista varten where()-ehto. Verratkaa ORM-malliin yhdistettyä saraketta tavallisella Python-operaattorilla.

from sqlalchemy import select
# stmt = select(User).where(User.age > 28)
# adults = session.scalars(stmt).all()
print('where(User.age > 28) filters rows')

Yhden olion hakeminen

session.scalars(stmt).first() palauttaa ensimmäisen osuman tai arvon None. one() odottaa täsmälleen yhtä riviä ja aiheuttaa virheen muussa tapauksessa.

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

Haku perusavaimella

session.get(User, 1) on nopein tapa hakea yksittäinen olio sen perusavaimen perusteella.

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

Tulosten järjestäminen

Ketjuttakaa order_by()-metodi tulosten lajittelemiseksi. Käyttäkää sarakkeessa .desc()-metodia laskevaan järjestykseen.

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

Olion päivittäminen

Muuttakaa ladatun olion attribuuttia ja kutsukaa sitten commit()-metodia. Istunto tunnistaa muutoksen ja suorittaa UPDATE-lauseen.

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

Olion poistaminen

session.delete(obj) merkitsee olion poistettavaksi. DELETE suoritetaan seuraavan vahvistuksen yhteydessä.

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

Pikatarkistus

Testatkaa Session-osaamistanne.

Kertaus

Opitte lukemaan ja muuttamaan tietoja Session-olion kautta.

  • Session seuraa työyksikköänne
  • add() asettaa olion käsiteltäväksi ja commit() tallentaa muutokset pysyvästi
  • select() + scalars() lukee oliot; where() suodattaa tuloksia
  • session.get() hakee olion perusavaimen perusteella; muokkaukset ja delete() tulevat voimaan vahvistuksen yhteydessä
Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
76
Oppitunnit
320

Usein kysytyt kysymykset

Onko oppitunti ”Kyselyt Sessionilla” ilmainen?

Kyllä – oppitunnin ”Kyselyt Sessionilla” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Kyselyt Sessionilla”?

Lue ja suodata tietoja Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Kyselyt Sessionilla”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?

Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. SQLAlchemy Core vai ORM
  2. Mallien määrittäminen
  3. Kyselyt Sessionilla
  4. Relaatiot ja liitokset
← Takaisin: Python Academy