SQLAlchemy는 「파이썬에서 데이터베이스를 다루는 표준 도구」입니다.
SQL을 직접 쓰는 「Core」와 객체로 다루는 「ORM」 두 인터페이스를 제공하며, MySQL·PostgreSQL·SQLite·Oracle 등 거의 모든 DB를 지원합니다.
기본 사용.
from sqlalchemy import create_engine.
engine = create_engine("sqlite:///app.db").
다양한 DB는 URL만 바꾸면 OK — "postgresql://user:pass@host:5432/db", "mysql+pymysql://...".
같은 코드가 여러 DB에서 동작합니다.
Pandas와 결합.
df = pd.read_sql("SELECT * FROM users WHERE age > 30", engine).
한 줄로 SQL 결과를 DataFrame으로.
df.to_sql("new_table", engine) — DataFrame을 DB 테이블로.
데이터 분석에서 매우 자주 쓰는 패턴입니다.
ORM(객체 관계 매핑).
클래스로 테이블 정의.
class User(Base): __tablename__ = "users"; id = Column(Integer, primary_key=True); name = Column(String).
session.query(User).filter(User.age > 30).all().
SQL을 직접 쓰지 않고 파이썬 객체로 DB를 다룰 수 있습니다.
ORM vs Core.
ORM은 「객체지향적이고 안전」하지만 복잡한 쿼리에서 느릴 수 있습니다.
Core는 「SQL에 가까워 빠르고 명시적」이지만 코드가 다소 길어집니다.
작은 앱·표준 CRUD는 ORM, 복잡한 분석 쿼리는 Core가 일반 가이드.
SQLAlchemy 2.0(2023)은 두 인터페이스를 통합해 더 친숙해졌습니다.
한 줄 요약
SQLAlchemy는 파이썬에서 DB를 다루는 표준 도구로, SQL을 직접 쓰는 Core와 객체로 다루는 ORM 두 인터페이스를 제공합니다.
pandas의 read_sql·to_sql과 결합이 자연스럽습니다.
더 알아볼 것
- Alembic — 스키마 마이그레이션
- FastAPI + SQLAlchemy 패턴
- Django ORM과의 차이