5.1.4 SQLModel
지금까지 SQLAlchemy와 Pydantic을 왜 설명했는지 궁금했을 것입니다. 책에서는 SQLModel을 사용할 예정인데, SQLModel은 Pydantic과 SQLAlchemy를 결합한 ORM이자 데이터 구현체입니다. 두 도구의 장점을 결합한 것이 아니라 물리적으로 두 도구를 합친 도구로, 데이터 검증 및 타입 힌팅을 제공하는 Pydantic의 편의성과 데이터베이스 접근을 담당하는 ORM(SQLAlchemy)의 강력함을 하나의 일관된 모델링 방식으로 통합한 도구입니다. 그래서 모델은 한번 정의하면 데이터 검증, 변환뿐만 아니라 데이터베이스 CRUD1 작업까지 손쉽게 처리할 수 있습니다. 간단히 말해 Pydantic 객체를 ORM 객체로 변환하지 않아도 됩니다.
• Pydantic: 데이터 검증, 스키마 정의, 타입 변환을 도와줍니다.
• SQLAlchemy: 파이썬 객체와 데이터베이스를 연결하여 SQL 없이도 데이터 CRUD가 가능하게 합니다.
기존에는 API 요청 검증을 위해 Pydantic 모델을 정의하고, 데이터베이스에 저장하려고 SQLAlchemy 모델을 별도로 정의하는 경우가 많았습니다. 그래서 비슷한 필드를 중복 정의하게 만들거나 데이터 흐름상 변환 코드가 필요했지요.
각각의 모델 정의 예시를 보고 차이점을 살펴보세요.