SQLAlchemy Core와 ORM 비교
두 계층 이해하기
SQLAlchemy Core와 ORM 비교은(는) CoddyKit의 무료 Python Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Python Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
SQLAlchemy란 무엇인가요?
SQLAlchemy는 관계형 데이터베이스를 다루기 위한 가장 널리 사용되는 Python 도구 모음입니다. 두 가지 계층인 코어와 ORM을 제공합니다.
pip install sqlalchemy로 설치합니다.
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
print('Engine:', engine)엔진
두 계층 모두 create_engine()으로 생성하는 엔진에서 시작합니다. 엔진은 연결 풀을 관리하고 URL을 통해 특정 데이터베이스와 통신하는 방법을 알고 있습니다.
from sqlalchemy import create_engine
engine = create_engine('sqlite:///app.db')
print('Dialect:', engine.dialect.name)두 계층
코어는 SQL 표현식 도구 모음으로, SQL과 밀접하게 대응하는 쿼리를 작성할 수 있습니다.
ORM은 코어 위에서 작동하며 Python 클래스를 테이블에 매핑하므로, 행 대신 객체를 다룰 수 있습니다.
# Core: think in tables and SQL expressions
# ORM: think in Python classes and objects
print('Core = SQL toolkit, ORM = object mapping')코어: 테이블 정의하기
코어에서는 Table과 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)코어: 쿼리 작성하기
코어에서는 select()와 같은 Python 표현식으로 쿼리를 작성하며, 이 표현식은 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: 매핑된 클래스
ORM에서는 Python 클래스가 테이블을 나타냅니다. 각 속성은 열에 매핑됩니다. 원시 행이 아니라 객체를 조회하고 저장합니다.
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__)코어를 사용할 때
정확한 SQL을 세밀하게 제어하고 싶거나, 대량의 데이터를 처리하거나, 객체가 추가 부담을 만드는 복잡한 보고서 쿼리를 실행할 때 코어가 적합합니다.
# Core is great for:
# - bulk inserts/updates
# - complex analytical queries
# - close control over generated SQL
print('Core: control and performance')ORM을 사용할 때
ORM은 일반적인 애플리케이션 코드에 적합합니다. 비즈니스 엔터티를 클래스로 모델링하고, 변경 추적 기능을 사용하며, 반복적인 코드를 줄일 수 있습니다.
# ORM is great for:
# - application domain models
# - automatic change tracking
# - relationships between objects
print('ORM: productivity and clarity')두 계층이 엔진을 공유합니다
ORM은 코어를 기반으로 만들어졌으므로 두 계층 모두 같은 엔진과 연결 풀을 사용합니다. 하나의 애플리케이션에서 두 계층을 함께 사용할 수도 있습니다.
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')테이블 생성하기
ORM에서 Base.metadata.create_all(engine)은 매핑된 모든 클래스에 대한 CREATE TABLE 문을 실행합니다.
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')계층 선택하기
대부분의 애플리케이션은 일상적인 작업에 ORM을 기본으로 사용하고, 드물게 무겁거나 고도로 최적화된 쿼리가 필요할 때 코어를 사용합니다. 두 계층을 모두 알면 유연하게 작업할 수 있습니다.
# Rule of thumb:
# Start with the ORM. Use Core where you need raw power.
print('Default ORM, escape to Core when needed')빠른 확인
두 계층에 대한 이해도를 확인해 보세요.
복습
SQLAlchemy의 구조를 살펴보았습니다.
Engine은create_engine()을 통해 전체 기능을 구동합니다- 코어는 제어력과 성능을 위한 SQL 표현식 도구 모음입니다
- ORM은 클래스를 테이블에 매핑하여 생산적인 애플리케이션 코드를 작성하게 합니다
- 두 계층은 같은 엔진을 공유하며 함께 사용할 수 있습니다
자주 묻는 질문
“SQLAlchemy Core와 ORM 비교” 강의는 무료인가요?
네 — “SQLAlchemy Core와 ORM 비교” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Python Academy 강의 전체를 잠금 해제할 수 있습니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“SQLAlchemy Core와 ORM 비교”에서 뭘 배우나요?
두 계층 이해하기 브라우저에서 직접 실행하는 실습 코드로 Python Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Python Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Python Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“SQLAlchemy Core와 ORM 비교” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Python Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Python Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- SQLAlchemy Core와 ORM 비교
- 모델 정의하기
- Session으로 쿼리하기
- 관계와 조인