SQLAlchemy Core vai ORM
Ymmärrä nämä kaksi kerrosta
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.
Enginehuolehtii kaikesta funktioncreate_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ää
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
- SQLAlchemy Core vai ORM
- Mallien määrittäminen
- Kyselyt Sessionilla
- Relaatiot ja liitokset