Flask
Chapter 3-10 Schema & Model 차이
Chansman
2025. 4. 21. 10:58
📌 개념 정리
13. Schema & Model 차이
🔍 모델 (Model)이란?
모델은 데이터베이스의 테이블을 나타내며, SQLAlchemy와 같은 ORM(Object-Relational Mapping) 도구를 이용하여 데이터베이스와 직접 상호작용합니다.
- 데이터베이스 테이블의 구조를 정의합니다.
- 데이터베이스에 데이터를 질의(Query), 삽입(Insert), 업데이트(Update), 삭제(Delete)하는 등의 작업을 수행합니다.
🔍 스키마 (Schema)란?
스키마는 Marshmallow와 같은 라이브러리를 사용하여 데이터의 직렬화(Serialization) 및 역직렬화(Deserialization)를 처리하고 데이터의 유효성을 검증하는 데 사용됩니다.
- 클라이언트에서 보내는 데이터의 유효성을 검증합니다.
- 서버에서 보내는 응답 데이터를 적절한 형식으로 변환합니다.
- 클라이언트와 서버 간 데이터 교환 포맷을 정의하고 관리합니다.
📌 Schema와 Model의 주요 차이점
항목 모델(Model) 스키마(Schema)
사용 라이브러리 | SQLAlchemy | Marshmallow |
주요 역할 | 데이터베이스 구조 정의 및 상호작용 | 데이터 형식 정의 및 유효성 검사 |
목적 | 데이터 저장 및 조회 | 데이터 직렬화 및 역직렬화 |
사용 예시 | 데이터베이스 테이블 정의 | API 요청 및 응답 데이터 검증 및 변환 |
📝 코드 예시로 알아보기
다음의 코드 예시에서 UserSchema는 사용자 데이터를 JSON 형식으로 변환하거나, JSON 데이터를 파이썬 객체로 변환하는 작업을 수행합니다.
# 모델 정의 예시 (SQLAlchemy)
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
# 스키마 정의 예시 (Marshmallow)
from marshmallow import Schema, fields
class UserSchema(Schema):
id = fields.Int(dump_only=True)
username = fields.Str(required=True)
email = fields.Email(required=True)
- 모델은 데이터베이스와 직접적으로 연결된 구조를 제공합니다.
- 스키마는 API 요청과 응답 과정에서 데이터 유효성 검사를 수행하고 데이터를 변환합니다.
✅ 마무리 요약 및 복습 포인트
- 모델(Model): 데이터베이스의 구조 정의 및 데이터 조작
- 스키마(Schema): 데이터의 형식 관리 및 유효성 검사
- API 개발 시 모델과 스키마의 차이와 역할을 명확히 이해하여 효율적인 데이터 관리와 안정성을 확보하세요!