Python Academy · Oppitunti

SQLAlchemy Core vai ORM

Ymmärrä nämä kaksi kerrosta

Oppitunti 1/413 vaihetta

SQLAlchemy Core vai ORM on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/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.

Mikä on SQLAlchemy?

SQLAlchemy on suosituin Python-työkalukokoelma relaatiotietokantojen kanssa työskentelyyn. Se tarjoaa kaksi tasoa: Core ja ORM.

Asentakaa se komennolla pip install sqlalchemy.

from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
print('Engine:', engine)

Engine

Molemmat tasot alkavat Enginestä, joka luodaan funktiolla create_engine(). Se hallitsee yhteyspoolia ja osaa keskustella tietyn tietokannan kanssa URL-osoitteen avulla.

from sqlalchemy import create_engine
engine = create_engine('sqlite:///app.db')
print('Dialect:', engine.dialect.name)

Kaksi tasoa

Core on SQL-lausekkeiden työkalukokoelma: sen avulla rakennetaan kyselyitä, jotka vastaavat läheisesti SQL:ää.

ORM perustuu Coren päälle ja yhdistää Python-luokat tauluihin, joten käsittelette olioita rivien sijaan.

# Core: think in tables and SQL expressions
# ORM: think in Python classes and objects
print('Core = SQL toolkit, ORM = object mapping')

Core: taulun määrittäminen

Coressa kuvaatte taulut eksplisiittisesti olioilla Table ja MetaData.

from sqlalchemy import MetaData, Table, Column, Integer, String
metadata = MetaData()
users = Table('users', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String))
print('Table defined:', users.name)

Core: kyselyn rakentaminen

Core rakentaa kyselyitä Python-lausekkeilla, kuten select(), jotka kääntyvät suoraan SQL:ksi.

from sqlalchemy import MetaData, Table, Column, Integer, String, select
metadata = MetaData()
users = Table('users', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String))
stmt = select(users).where(users.c.name == 'Alice')
print(stmt)

ORM: mallinnettu luokka

ORM:ssä Python-luokka edustaa taulua. Jokainen attribuutti vastaa saraketta. Kyselyissä ja tallennuksessa käsittelette olioita raakojen rivien sijaan.

from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str]
print('Mapped class:', User.__tablename__)

Milloin Corea kannattaa käyttää

Core sopii tilanteisiin, joissa haluatte hallita tarkasti käytettävää SQL:ää, käsitellä suuria tietomääriä tai suorittaa monimutkaisia raportointikyselyitä, joissa oliot aiheuttaisivat ylimääräistä kuormaa.

# Core is great for:
# - bulk inserts/updates
# - complex analytical queries
# - close control over generated SQL
print('Core: control and performance')

Milloin ORM:ää kannattaa käyttää

ORM sopii tyypilliseen sovelluskoodiin: mallinnatte liiketoiminnan entiteetit luokkina, saatte käyttöön muutosten seurannan ja kirjoitatte vähemmän toistuvaa koodia.

# ORM is great for:
# - application domain models
# - automatic change tracking
# - relationships between objects
print('ORM: productivity and clarity')

Molemmat käyttävät samaa Engineä

Koska ORM on rakennettu Coren päälle, molemmat käyttävät samaa Engineä ja yhteyspoolia. Voitte jopa yhdistää ne samassa sovelluksessa.

from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
# Core uses engine.connect()
# ORM uses a Session bound to the same engine
print('One engine powers both layers')

Taulujen luominen

ORM:n kanssa Base.metadata.create_all(engine) suorittaa kaikkien mallinnettujen luokkien CREATE TABLE -lauseet.

from sqlalchemy import create_engine
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
print('Tables created')

Tason valitseminen

Useimmissa sovelluksissa ORM on oletusvalinta päivittäiseen työskentelyyn, mutta harvinaisissa raskaissa tai tarkasti optimoiduissa kyselyissä voitte siirtyä Coreen. Molempien tunteminen antaa joustavuutta.

# Rule of thumb:
# Start with the ORM. Use Core where you need raw power.
print('Default ORM, escape to Core when needed')

Pikatesti

Testatkaa ymmärrystänne näistä kahdesta tasosta.

Kertaus

Tutustuitte SQLAlchemyn arkkitehtuuriin.

  • Engine huolehtii kaikesta funktion create_engine() kautta
  • Core on SQL-lausekkeiden työkalukokoelma, joka tarjoaa hallintaa ja suorituskykyä
  • ORM yhdistää luokat tauluihin ja helpottaa sovelluskoodin kirjoittamista
  • Molemmat käyttävät samaa Engineä ja niitä voi yhdistää
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 ”SQLAlchemy Core vai ORM” ilmainen?

Kyllä – oppitunnin ”SQLAlchemy Core vai ORM” 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 ”SQLAlchemy Core vai ORM”?

Ymmärrä nämä kaksi kerrosta 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 1/4.

Kuinka kauan ”SQLAlchemy Core vai ORM”-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