SQLAlchemy Core versus ORM
Begrijp de twee lagen
SQLAlchemy Core versus ORM is een gratis Python Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Python Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Python Academy bevat in totaal 4 lessen.
Wat is SQLAlchemy?
SQLAlchemy is de populairste Python-toolkit voor het werken met relationele databases. Het biedt twee lagen: Core en de ORM.
Je installeert het met pip install sqlalchemy.
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
print('Engine:', engine)De Engine
Beide lagen beginnen met een Engine, die wordt gemaakt met create_engine(). Deze beheert de verbindingspool en weet via een URL hoe je met je specifieke database moet communiceren.
from sqlalchemy import create_engine
engine = create_engine('sqlite:///app.db')
print('Dialect:', engine.dialect.name)De twee lagen
Core is een hulpmiddel voor SQL-expressies: je bouwt query's die nauw aansluiten bij SQL.
De ORM is op Core gebouwd en koppelt Python-klassen aan tabellen, zodat je met objecten werkt in plaats van met rijen.
# Core: think in tables and SQL expressions
# ORM: think in Python classes and objects
print('Core = SQL toolkit, ORM = object mapping')Core: Een tabel definiëren
In Core beschrijf je tabellen expliciet met Table- en MetaData-objecten.
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: Een query bouwen
Core bouwt query's met Python-expressies zoals select(), die rechtstreeks naar SQL worden vertaald.
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: Een gekoppelde klasse
In de ORM stelt een Python-klasse een tabel voor. Elk attribuut wordt aan een kolom gekoppeld. Je vraagt objecten op en slaat ze op, niet onbewerkte rijen.
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__)Wanneer gebruik je Core?
Core is geschikt wanneer je nauwkeurige controle over de exacte SQL wilt, grote hoeveelheden gegevens verwerkt of complexe rapportagequery's uitvoert waarbij objecten extra overhead veroorzaken.
# Core is great for:
# - bulk inserts/updates
# - complex analytical queries
# - close control over generated SQL
print('Core: control and performance')Wanneer gebruik je de ORM?
De ORM is geschikt voor typische toepassingscode: je modelleert bedrijfsentiteiten als klassen, krijgt ondersteuning voor het bijhouden van wijzigingen en schrijft minder standaardcode.
# ORM is great for:
# - application domain models
# - automatic change tracking
# - relationships between objects
print('ORM: productivity and clarity')Ze delen de Engine
Omdat de ORM op Core is gebouwd, gebruiken beide dezelfde Engine en verbindingspool. Je kunt ze zelfs in één toepassing combineren.
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')Tabellen maken
Met de ORM genereert Base.metadata.create_all(engine) de instructies voor CREATE TABLE voor alle gekoppelde klassen.
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')Een laag kiezen
De meeste toepassingen gebruiken standaard de ORM voor dagelijks werk en schakelen alleen voor zeldzame zware of sterk geoptimaliseerde query's over naar Core. Als je beide kent, ben je flexibel.
# Rule of thumb:
# Start with the ORM. Use Core where you need raw power.
print('Default ORM, escape to Core when needed')Korte controle
Test je begrip van de twee lagen.
Samenvatting
Je hebt kennisgemaakt met de architectuur van SQLAlchemy.
- De
Enginevormt de basis van alles viacreate_engine() - Core is een hulpmiddel voor SQL-expressies, gericht op controle en prestaties
- De ORM koppelt klassen aan tabellen voor efficiënte toepassingscode
- Beide delen dezelfde engine en kunnen worden gecombineerd
Leer Python met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 76
- Lessen
- 320
Veelgestelde vragen
Is de les “SQLAlchemy Core versus ORM” gratis?
Ja — de volledige tekst van “SQLAlchemy Core versus ORM” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Python Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Python Academy bevat in totaal 4 lessen.
Wat leer ik in “SQLAlchemy Core versus ORM”?
Begrijp de twee lagen Je oefent met Python Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Python Academy te beginnen?
Ervaring vooraf is niet nodig. Python Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.
Hoe lang duurt de les “SQLAlchemy Core versus ORM”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Python Academy?
Ja. Elke les over Python Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- SQLAlchemy Core versus ORM
- Modellen definiëren
- Query's uitvoeren met de Session
- Relaties en joins