SQLAlchemy Core a ORM
Poznaj obie warstwy
SQLAlchemy Core a ORM to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.
Czym jest SQLAlchemy?
SQLAlchemy to najpopularniejszy zestaw narzędzi Pythona do pracy z relacyjnymi bazami danych. Oferuje dwie warstwy: Core i ORM.
Zainstalujesz go za pomocą pip install sqlalchemy.
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
print('Engine:', engine)Silnik
Obie warstwy zaczynają pracę od obiektu Engine, utworzonego za pomocą create_engine(). Zarządza on pulą połączeń i wie, jak komunikować się z konkretną bazą danych na podstawie adresu URL.
from sqlalchemy import create_engine
engine = create_engine('sqlite:///app.db')
print('Dialect:', engine.dialect.name)Dwie warstwy
Core to zestaw narzędzi do tworzenia wyrażeń SQL: budujesz zapytania, które są ściśle powiązane z językiem SQL.
ORM działa na bazie Core i mapuje klasy Pythona na tabele, dzięki czemu pracujesz z obiektami zamiast z wierszami.
# Core: think in tables and SQL expressions
# ORM: think in Python classes and objects
print('Core = SQL toolkit, ORM = object mapping')Core: definiowanie tabeli
W Core jawnie opisujesz tabele za pomocą obiektów Table i 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: budowanie zapytania
Core buduje zapytania za pomocą wyrażeń Pythona, takich jak select(), które są bezpośrednio tłumaczone na SQL.
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: mapowana klasa
W ORM klasa Pythona reprezentuje tabelę. Każdy atrybut jest mapowany na kolumnę. Odczytujesz i zapisujesz obiekty, a nie surowe wiersze.
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__)Kiedy używać Core
Core sprawdza się, gdy potrzebujesz precyzyjnej kontroli nad konkretnym kodem SQL, wykonujesz operacje na dużych ilościach danych albo tworzysz złożone zapytania raportowe, w których obiekty powodowałyby dodatkowy narzut.
# Core is great for:
# - bulk inserts/updates
# - complex analytical queries
# - close control over generated SQL
print('Core: control and performance')Kiedy używać ORM
ORM sprawdza się w typowym kodzie aplikacji: modelujesz encje biznesowe jako klasy, otrzymujesz śledzenie zmian i piszesz mniej kodu pomocniczego.
# ORM is great for:
# - application domain models
# - automatic change tracking
# - relationships between objects
print('ORM: productivity and clarity')Wspólny silnik
Ponieważ ORM jest zbudowany na bazie Core, obie warstwy korzystają z tego samego obiektu Engine i tej samej puli połączeń. Możesz nawet łączyć je w jednej aplikacji.
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')Tworzenie tabel
W ORM wywołanie Base.metadata.create_all(engine) generuje instrukcje CREATE TABLE dla wszystkich zmapowanych klas.
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')Wybór warstwy
W większości aplikacji ORM jest domyślnym wyborem do codziennej pracy, a Core wykorzystuje się w rzadkich przypadkach wymagających dużej wydajności lub szczegółowego dostrojenia zapytania. Znajomość obu warstw zapewnia elastyczność.
# Rule of thumb:
# Start with the ORM. Use Core where you need raw power.
print('Default ORM, escape to Core when needed')Szybki test
Sprawdź, czy rozumiesz obie warstwy.
Podsumowanie
Poznałeś architekturę SQLAlchemy.
Engineobsługuje wszystkie operacje za pośrednictwemcreate_engine()- Core to zestaw narzędzi do tworzenia wyrażeń SQL, zapewniający kontrolę i wydajność
- ORM mapuje klasy na tabele, ułatwiając tworzenie kodu aplikacji
- Obie warstwy korzystają z tego samego silnika i można je łączyć
Często zadawane pytania
Czy lekcja „SQLAlchemy Core a ORM” jest bezpłatna?
Tak — pełny tekst „SQLAlchemy Core a ORM” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „SQLAlchemy Core a ORM”?
Poznaj obie warstwy Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Python Academy?
Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „SQLAlchemy Core a ORM”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?
Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- SQLAlchemy Core a ORM
- Definiowanie modeli
- Zapytania za pomocą Session
- Relacje i złączenia