[python] Marshmallow를 사용하여 데이터베이스 스키마 관리하기

마샬마로우(Marshmallow)는 파이썬에서 직렬화와 역직렬화를 위한 라이브러리입니다. 데이터베이스 스키마를 관리할 때 유용하게 사용될 수 있습니다. 이번 글에서는 마샬마로우를 사용하여 데이터베이스 스키마를 정의하고 관리하는 방법을 알아보겠습니다.

1. Marshmallow 설치하기

마샬마로우를 사용하기 위해 먼저 패키지를 설치해야 합니다. 다음 명령을 사용하여 마샬마로우를 설치할 수 있습니다.

pip install marshmallow

2. 스키마 정의하기

데이터베이스 스키마를 정의하기 위해 마샬마로우의 Schema 클래스를 상속한 클래스를 작성해야 합니다. 다음은 UserSchema라는 클래스를 예시로 들어보겠습니다.

from marshmallow import Schema, fields

class UserSchema(Schema):
    id = fields.Int(dump_only=True)
    name = fields.Str()
    email = fields.Email()

id 필드는 dump_only=True로 설정하여 직렬화할 때만 사용되도록 설정하였습니다. name 필드는 문자열이며, email 필드는 이메일 형식을 가져야 합니다.

3. 데이터 직렬화하기

스키마를 정의한 후에는 데이터를 직렬화하여 JSON 형태로 변환할 수 있습니다. 다음은 UserSchema를 사용하여 사용자 데이터를 직렬화하는 예제입니다.

user_data = {
    'id': 1,
    'name': 'John Doe',
    'email': 'john@example.com'
}

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

print(result)

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

{
    'id': 1,
    'name': 'John Doe',
    'email': 'john@example.com'
}

4. 데이터 역직렬화하기

데이터베이스로부터 데이터를 가져올 때는 JSON 형태로 저장된 데이터를 역직렬화하여 사용해야 합니다. 다음은 UserSchema를 사용하여 JSON 데이터를 역직렬화하는 예제입니다.

user_json = '''
{
    "id": 1,
    "name": "John Doe",
    "email": "john@example.com"
}
'''

user_schema = UserSchema()
result = user_schema.load(user_json)

print(result)

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

{
    'id': 1,
    'name': 'John Doe',
    'email': 'john@example.com'
}

마무리

마샬마로우는 데이터베이스 스키마 관리에 유용한 라이브러리입니다. 이번 글에서는 마샬마로우를 사용하여 데이터베이스 스키마를 정의하고 직렬화 및 역직렬화하는 방법을 알아보았습니다. 마샬마로우를 사용하여 데이터베이스 스키마 관리를 쉽게 할 수 있으니, 실제 프로젝트에서 활용해보시기 바랍니다.