[python] Peewee에서 모델 정의하기

Peewee는 파이썬에서 사용할 수 있는 가벼운 ORM(Object-Relational Mapping) 라이브러리입니다. 이를 사용하면 데이터베이스와의 상호작용을 간편하게 처리할 수 있습니다. 이번 글에서는 Peewee를 사용하여 모델을 정의하는 방법에 대해 알아보겠습니다.

모델 클래스 정의하기

먼저, Peewee에서 모델을 정의하기 위해 Model 클래스를 상속하는 클래스를 만들어야 합니다. 이 클래스는 데이터베이스의 테이블과 매핑되는 모델을 나타냅니다. 예를 들어, 사용자(User) 모델을 정의하고 싶다면 다음과 같이 클래스를 작성할 수 있습니다:

from peewee import *

class User(Model):
    username = CharField(unique=True)
    email = CharField()
    password = CharField()

    class Meta:
        database = ...

위 예시에서는 username, email, password 세 개의 필드를 가진 User 모델을 정의했습니다. CharField는 문자열 필드를 나타내며, unique=True는 해당 필드의 값이 유일해야 함을 나타냅니다. Meta 클래스 내에서는 데이터베이스 연결을 지정하는 database 속성을 설정해야 합니다.

모델과 테이블 매핑하기

모델 정의가 완료되면, 해당 모델과 실제 데이터베이스 테이블을 매핑해야 합니다. 이를 위해 Peewee는 create_table() 메서드를 제공합니다. 예를 들어, 다음 코드를 사용하여 User 모델과 연결된 테이블을 생성할 수 있습니다:

User.create_table()

이렇게 하면 User 모델과 연결된 테이블이 데이터베이스에 생성됩니다.

모델 인스턴스 생성과 저장하기

이제 모델을 사용하여 데이터베이스에 새로운 레코드를 저장할 수 있습니다. 모델 클래스를 인스턴스화 한 다음, 필드에 값을 할당하고 save() 메서드를 호출하여 저장할 수 있습니다. 예를 들어, 다음 코드는 새로운 사용자를 생성하고 데이터베이스에 저장합니다:

user = User(username='john', email='john@example.com', password='secret')
user.save()

모델 레코드 조회하기

Peewee를 사용하면 데이터베이스에서 모델 레코드를 쉽게 조회할 수 있습니다. 모델 클래스에는 다양한 메서드가 제공되며, 이를 사용하여 원하는 레코드를 검색할 수 있습니다. 예를 들어, 다음 코드는 사용자 테이블에서 username이 ‘john’인 레코드를 검색합니다:

user = User.get(User.username == 'john')

이렇게하면 username이 ‘john’인 레코드를 변수 user에 할당할 수 있습니다.

위에서는 Peewee의 기본적인 사용법에 대해 살펴보았습니다. Peewee는 더 많은 기능과 유연성을 제공하므로 공식 문서를 참고하여 보다 자세한 내용을 알아보시기 바랍니다.

참고 자료