[python] Marshmallow를 사용하여 데이터 정규화하기

Marshmallow는 파이썬에서 사용할 수 있는 직렬화 및 역직렬화 라이브러리입니다. 이 라이브러리를 사용하면 데이터를 표준화하고 검증하기 위해 필요한 데이터 정규화 과정을 간단하게 수행할 수 있습니다.

Marshmallow 설치하기

Marshmallow를 사용하기 위해서는 먼저 라이브러리를 설치해야합니다. 다음과 같이 pip 명령어를 사용하여 설치할 수 있습니다:

pip install marshmallow

데이터 정의하기

데이터 정규화를 위해서는 Marshmallow에서 사용할 스키마를 정의해야합니다. 스키마는 데이터의 구조와 필드를 정의하는데 사용됩니다. 다음은 간단한 예제 스키마입니다:

from marshmallow import Schema, fields

class UserSchema(Schema):
    name = fields.Str()
    email = fields.Email()
    age = fields.Int()

위의 예제는 UserSchema 클래스를 정의하고 name, email, age 필드를 정의하는 예입니다. 각 필드는 해당하는 데이터 유형을 지정할 수 있습니다.

데이터 직렬화하기

Marshmallow를 사용하여 데이터를 직렬화하는 과정은 다음과 같습니다:

user_data = {
    'name': 'John Doe',
    'email': 'johndoe@example.com',
    'age': 30
}

schema = UserSchema()
result = schema.dump(user_data)

print(result)

위의 예제는 UserSchema를 사용하여 user_data를 직렬화하는 예입니다. dump 메소드는 입력된 데이터를 스키마에 맞게 직렬화하여 결과를 반환합니다.

데이터 역직렬화하기

Marshmallow를 사용하여 데이터를 역직렬화하는 과정은 다음과 같습니다:

user_json = '{"name": "John Doe", "email": "johndoe@example.com", "age": 30}'

schema = UserSchema()
result = schema.loads(user_json)

print(result)

위의 예제는 UserSchema를 사용하여 JSON 문자열을 역직렬화하는 예입니다. loads 메소드는 JSON 문자열을 스키마에 맞게 역직렬화하여 결과를 반환합니다.

데이터 유효성 검사하기

Marshmallow는 데이터 유효성 검사를 위한 기능도 제공합니다. 필드에 적용할 수 있는 다양한 유효성 검사 규칙을 지정할 수 있습니다. 다음은 유효성 검사를 사용하는 예제입니다:

class UserSchema(Schema):
    name = fields.Str(required=True, validate=validate.Length(min=1, max=50))
    email = fields.Email(required=True)
    age = fields.Int(required=True, validate=validate.Range(min=18, max=99))

위의 예제에서는 name 필드는 필수 필드이며 길이가 1 이상 50 이하여야 합니다. email 필드는 필수 필드이며 이메일 형식이어야 합니다. age 필드는 필수 필드이며 18 이상 99 이하여야 합니다.

결론

Marshmallow를 사용하면 파이썬 애플리케이션에서 데이터를 표준화하고 검증하기 위한 간단한 방법을 제공합니다. 이번 글에서는 Marshmallow의 기본 사용법에 대해 알아보았습니다. 더 자세한 내용은 Marshmallow 공식 문서를 참조하시기 바랍니다.