-
SQLAlchemy 1.3 vs 2.0 차이점Python/Today 2025. 8. 25. 09:22
✅ SQLAlchemy 1.3 vs 2.0 차이점
구분 1.3 버전 (기존) 2.0 버전 (신규) ORM 선언 Column, relationship을 직접 클래스 속성에 할당 Mapped, mapped_column()을 활용해 타입 힌트 기반 선언 세션 관리 Session = sessionmaker(bind=engine) 후 session = Session() with Session(engine) as session: 같은 컨텍스트 매니저 사용 권장 쿼리 API session.query(User).filter(User.name=="a") session.execute(select(User).where(User.name=="a")) 쿼리 반환값 ORM 객체 리스트 바로 반환 Result 객체 반환 → .scalars().all() 같은 변환 필요 타입 힌트 지원 사실상 거의 없음 정식 지원 (Mapped, Annotated, mypy/pyright 호환) 동기/비동기 지원 동기만 (async는 별도 라이브러리 필요) 공식적으로 AsyncSession, async_engine 지원 Declarative Base Base = declarative_base() class Base(DeclarativeBase) (클래스 기반) 자동 flush 세션 조작 시 flush 방식이 다소 불명확 flush, commit 동작을 더 명확하게 개선 관계 정의 그냥 relationship()만 사용 Mapped[List["Child"]] = relationship(...) 식으로 타입힌트와 함께 문법 스타일 1.x Legacy 스타일 (계속 지원은 됨) 2.0 스타일 권장, 1.x 스타일은 deprecated 예정 'Python > Today' 카테고리의 다른 글
Alembic (0) 2025.08.26 Mapped (0) 2025.08.25 SQLAlchemy ORM 특징 (1) 2025.08.22 UUID VS ULID (0) 2025.08.12 python 정리 #3(app/crud/user_crud.py) (0) 2025.07.08