[python] Marshmallow에서 제공하는 필드 유형과 사용법

Marshmallow는 Python에서 직렬화와 역직렬화를 위한 강력한 라이브러리입니다. 이 라이브러리는 데이터베이스 모델, API 요청 및 응답 데이터의 직렬화를 쉽게 처리할 수 있도록 도와줍니다. 이번에는 Marshmallow에서 제공하는 주요 필드 유형과 사용법을 알아보겠습니다.

1. StringField

StringField는 문자열 값을 나타내는 필드입니다. 문자열 길이, 유효성 검사 등을 적용할 수 있습니다.

from marshmallow import Schema, fields

class UserSchema(Schema):
    name = fields.String(required=True, validate=lambda n: len(n) >= 3)

user_data = {"name": "John"}
schema = UserSchema()
result = schema.load(user_data)

print(result)  # {'name': 'John'}

2. IntegerField

IntegerField는 정수 값을 나타내는 필드입니다. 범위, 유효성 검사 등을 적용할 수 있습니다.

from marshmallow import Schema, fields

class UserSchema(Schema):
    age = fields.Integer(required=True, validate=lambda n: 0 <= n <= 150)

user_data = {"age": 25}
schema = UserSchema()
result = schema.load(user_data)

print(result)  # {'age': 25}

3. BooleanField

BooleanField는 불리언 값을 나타내는 필드입니다. 참/거짓 값만 허용됩니다.

from marshmallow import Schema, fields

class UserSchema(Schema):
    is_active = fields.Boolean(required=True)

user_data = {"is_active": True}
schema = UserSchema()
result = schema.load(user_data)

print(result)  # {'is_active': True}

4. DateTimeField

DateTimeField는 날짜 및 시간 값을 나타내는 필드입니다. 다양한 날짜 포맷을 지원합니다.

from marshmallow import Schema, fields

class UserSchema(Schema):
    created_at = fields.DateTime(format="%Y-%m-%d %H:%M:%S")

user_data = {"created_at": "2021-08-10 15:30:00"}
schema = UserSchema()
result = schema.load(user_data)

print(result)  # {'created_at': datetime.datetime(2021, 8, 10, 15, 30)}

Marshmallow는 위와 같이 다양한 필드 유형을 제공하여 데이터 직렬화 작업을 보다 편리하게 할 수 있도록 도와줍니다. 필요에 따라 유효성 검사, 포맷 지정 등을 세밀하게 제어할 수 있어 많은 유용성을 가지고 있습니다. 자세한 내용은 Marshmallow 공식 문서를 참고하시기 바랍니다.