[python] Peewee를 사용하여 모바일 애플리케이션 개발하기

모바일 애플리케이션을 개발할 때 데이터베이스를 사용해야 하는 경우가 많습니다. 이때 Peewee는 Python에서 사용할 수 있는 가벼운 ORM(Object-Relational Mapping) 라이브러리입니다. Peewee를 사용하면 SQL 쿼리를 직접 작성하지 않고도 Python 코드를 통해 데이터베이스를 조작할 수 있습니다. 이번 포스트에서는 Peewee를 사용하여 모바일 애플리케이션을 개발하는 방법에 대해 알아보겠습니다.

1. Peewee 설치하기

Peewee를 사용하기 위해서는 먼저 Peewee를 설치해야 합니다. 다음 명령을 사용하여 Peewee를 설치할 수 있습니다:

pip install peewee

2. 데이터베이스 연결 설정하기

Peewee를 사용하기 위해서는 우선 데이터베이스에 연결해야 합니다. 다음은 SQLite 데이터베이스에 연결하는 예제입니다:

from peewee import *

database = SqliteDatabase('my_app.db') # 데이터베이스 파일명을 설정합니다

class BaseModel(Model):
    class Meta:
        database = database

# 모델 클래스를 정의합니다
class User(BaseModel):
    name = CharField()
    email = CharField(unique=True)

# 데이터베이스에 연결합니다
database.connect()
database.create_tables([User]) # 필요한 테이블을 생성합니다

위 예제에서는 my_app.db라는 SQLite 데이터베이스 파일을 생성하고, User 모델 클래스를 정의하였습니다.

3. 데이터베이스 조작하기

Peewee를 사용하면 Python 코드를 통해 데이터베이스를 조작할 수 있습니다. 예를 들어, 사용자를 추가하거나 조회하는 코드는 다음과 같습니다:

# 사용자 추가
user = User(name='John', email='john@example.com')
user.save()

# 사용자 조회
users = User.select()
for user in users:
    print(user.name, user.email)

위 코드에서는 User 모델을 사용하여 사용자를 추가하고 모든 사용자를 조회하는 예제를 보여주었습니다.

4. 쿼리 작성하기

Peewee에서는 강력한 쿼리 작성 기능을 제공합니다. 예를 들어, 특정 조건을 가진 사용자를 조회하는 코드는 다음과 같습니다:

# 이름이 'John'인 사용자 조회
users = User.select().where(User.name == 'John')

# 이메일이 'example.com'으로 끝나는 사용자 조회
users = User.select().where(User.email.endswith('@example.com'))

# 이름이 'John'이거나 이메일이 'example.com'으로 끝나는 사용자 조회
users = User.select().where((User.name == 'John') | (User.email.endswith('@example.com')))

위 코드에서는 User 모델을 사용하여 조건에 맞는 사용자를 조회하는 예제를 보여주었습니다.

5. Peewee의 기능 확장하기

Peewee는 강력한 기능 확장 기능을 제공하여 개발자가 필요에 맞게 확장할 수 있습니다. 예를 들어, Peewee의 Field 클래스를 상속받아 새로운 필드 타입을 정의할 수 있습니다.

from peewee import *

class EnumField(Field):
    def __init__(self, choices, *args, **kwargs):
        self.choices = choices
        super().__init__(*args, **kwargs)

    def get_db_type(self):
        return 'ENUM({})'.format(','.join(["'{}'".format(choice) for choice in self.choices]))

위 코드에서는 EnumField라는 새로운 필드 타입을 정의하였습니다.

결론

이렇게 Peewee를 사용하여 모바일 애플리케이션을 개발하는 방법에 대해 알아보았습니다. Peewee는 가벼우면서도 강력한 ORM 라이브러리로서 데이터베이스 작업을 간편하게 처리할 수 있습니다. Peewee의 다양한 기능을 활용하여 효율적인 모바일 애플리케이션을 개발해 보세요.

참조