[python] Marshmallow를 사용하여 데이터베이스 로깅 처리하기
마샬로우 (Marshmallow)는 파이썬에서 데이터 직렬화 및 유효성 검사를 위한 훌륭한 도구입니다. 이번 블로그 포스트에서는 마샬로우를 사용하여 데이터베이스 로깅을 처리하는 방법을 알아보겠습니다.
목차
Marshmallow란 무엇인가?
마샬로우는 JSON, YAML, HTTP POST 데이터 등을 처리하기 위한 개체 시리얼라이징 및 유효성 검사를 위한 도구입니다. 마샬로우는 데이터를 직렬화하여 다른 프로그램 간에 정보를 공유할 수 있도록 만들어줍니다. 또한, 데이터의 유효성을 검사하고 변환할 수 있는 강력한 기능을 제공합니다.
데이터베이스 모델 및 로깅 스키마 생성
데이터베이스 로깅을 위해 우선 데이터베이스 모델과 로깅 스키마를 생성해야 합니다. 예를 들어, 로깅 테이블은 다음과 같이 정의될 수 있습니다.
from sqlalchemy import Column, Integer, String, DateTime
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Log(Base):
__tablename__ = 'logs'
id = Column(Integer, primary_key=True)
message = Column(String(255))
created_at = Column(DateTime)
Marshmallow 스키마 생성
Marshmallow 스키마를 사용하여 데이터를 직렬화하고 유효성을 검사할 수 있습니다. 예를 들어, 로깅 스키마는 다음과 같이 정의될 수 있습니다.
from marshmallow import Schema, fields
class LogSchema(Schema):
id = fields.Integer(dump_only=True)
message = fields.String(required=True)
created_at = fields.DateTime()
데이터 저장 및 로깅
이제 데이터베이스에 데이터를 저장하고 로깅을 처리하는 코드를 작성할 수 있습니다. 다음은 예시입니다.
from datetime import datetime
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine('mysql://user:password@localhost/database')
Session = sessionmaker(bind=engine)
session = Session()
# 데이터 저장
log = Log(message='Error occurred', created_at=datetime.now())
session.add(log)
session.commit()
# 로깅
log_schema = LogSchema()
data, errors = log_schema.dumps(log)
if errors:
print(errors)
else:
print(data)
결론
마샬로우는 데이터 직렬화 및 유효성 검사를 위한 훌륭한 도구로 데이터베이스 로깅과 같은 작업을 보다 쉽고 효율적으로 처리할 수 있게 해줍니다. 이번 블로그 포스트에서는 마샬로우를 사용하여 데이터베이스 로깅을 처리하는 방법을 살펴보았습니다. 마샬로우에 대해 더 자세히 알고 싶다면 마샬로우 공식 문서를 참조해보세요.