[python] Peewee에서의 데이터 유효성 검사

Peewee는 Python으로 작성된 간단하고 가벼운 ORM(Object-Relational Mapping) 라이브러리입니다. 데이터베이스 작업을 수행할 때 데이터의 유효성을 검사하는 것은 매우 중요합니다. 이 글에서는 Peewee에서 데이터 유효성 검사를 수행하는 방법을 알아보겠습니다.

필드 유효성 검사

Peewee 모델에서 각 필드에 대해 유효성 검사를 수행하기 위해 constraints 매개변수를 사용할 수 있습니다. constraints 매개변수에는 필드의 유효성을 검사하는 함수를 지정할 수 있습니다. 예를 들어, 아래의 코드에서는 name 필드의 유효성을 검사하는 함수인 validate_name을 정의하고 사용합니다.

from peewee import *

def validate_name(value):
    if len(value) < 3:
        raise ValueError("이름은 3글자 이상이어야 합니다.")

class Person(Model):
    name = CharField(constraints=[validate_name])

    class Meta:
        database = db

위의 코드에서 name 필드는 최소 3글자 이상이어야 합니다. 이름이 3글자 미만인 경우 ValueError가 발생합니다.

모델 유효성 검사

모델 자체의 유효성을 검사하기 위해 Model 클래스의 constraints 속성을 사용할 수 있습니다. 예를 들어, 아래의 코드에서는 Person 모델의 유효성을 검사하는 함수인 validate_person을 정의하고 사용합니다.

from peewee import *

class Person(Model):
    name = CharField()

    def validate_person(self):
        if len(self.name) < 3:
            raise ValueError("이름은 3글자 이상이어야 합니다.")

    class Meta:
        database = db
        constraints = [validate_person]

validate_person 함수는 모델 객체의 유효성을 검사하고, 유효하지 않은 경우 ValueError를 발생시킵니다.

데이터 유효성 검사 예외 처리

유효성 검사가 실패할 경우 발생하는 예외를 처리할 필요가 있습니다. Peewee는 peewee.IntegrityError 예외를 사용하여 데이터 유효성 검사에 실패한 경우를 처리할 수 있습니다. 아래의 예시 코드에서는 IntegrityError 예외를 처리하여 유효성 검사 실패에 대한 대응 로직을 작성합니다.

from peewee import *

class Person(Model):
    name = CharField(constraints=[validate_name])

    class Meta:
        database = db
        constraints = [validate_person]

try:
    person = Person(name="John")
    person.save()
except IntegrityError as e:
    # 유효성 검사 실패에 대한 로직
    print(e)

위의 코드에서 IntegrityError 예외가 발생하면 유효성 검사 실패에 대한 대응 로직을 작성할 수 있습니다.

Peewee를 사용하여 데이터 유효성 검사를 수행하는 방법에 대해 알아보았습니다. 유효성 검사는 데이터의 일관성과 안정성을 보장하기 위해 매우 중요합니다. Peewee를 사용하여 올바른 데이터를 유지하는 것은 애플리케이션의 정확성과 신뢰성을 높이는 데 도움이 될 것입니다.