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를 사용하여 올바른 데이터를 유지하는 것은 애플리케이션의 정확성과 신뢰성을 높이는 데 도움이 될 것입니다.