[python] Peewee와 NoSQL 데이터베이스의 연동

Peewee는 Python에서 사용할 수 있는 간단하고 가벼운 ORM(Object-Relational Mapping) 라이브러리입니다. 기본적으로는 관계형 데이터베이스와 연동하여 데이터를 다루지만, Peewee를 사용하여 NoSQL 데이터베이스와도 연동할 수 있습니다. 이번 글에서는 Peewee를 사용하여 NoSQL 데이터베이스와 연동하는 방법에 대해 알아보겠습니다.

NoSQL 데이터베이스 선택

Peewee는 다양한 NoSQL 데이터베이스와 연동할 수 있습니다. 그 중에서도 가장 널리 사용되는 NoSQL 데이터베이스인 MongoDB를 예시로 사용하겠습니다. MongoDB는 document-based NoSQL 데이터베이스로, JSON 형태의 문서를 저장하고 쿼리할 수 있습니다.

프로젝트 설정

Peewee와 MongoDB를 연동하기 위해, pymongo 라이브러리를 설치해야 합니다. 아래 명령을 사용하여 pymongo를 설치할 수 있습니다.

pip install pymongo

또한, Peewee의 pymongo 확장 패키지인 peewee-asyncmongo를 설치해야 합니다. 아래 명령을 사용하여 peewee-asyncmongo를 설치할 수 있습니다.

pip install peewee-asyncmongo

Peewee 모델 정의

Peewee를 사용하여 NoSQL 데이터베이스와 연동하기 위해, 모델 클래스를 정의해야 합니다. 아래는 Peewee 모델 클래스의 예시입니다.

from peewee import *
from peewee_async import Manager

class User(Model):
    name = CharField()
    age = IntegerField()
    
    class Meta:
        database = Manager()

데이터베이스 연결

먼저, MongoDB에 연결해야 합니다. Peewee에서는 연결 정보를 담은 Connection 객체를 생성하고, 이를 MongoDatabase에 전달하여 데이터베이스에 연결합니다. 아래는 MongoDB에 연결하는 예시 코드입니다.

from peewee_async import PooledMySQLDatabase

database = PooledMySQLDatabase(
    'my_database',
    host='localhost',
    port=3306,
    user='my_user',
    password='my_password'
)

database.connect()

데이터 CRUD 작업

Peewee를 사용하여 NoSQL 데이터베이스와 CRUD 작업(생성, 조회, 갱신, 삭제)을 수행할 수 있습니다. 아래는 간단한 CRUD 작업의 예시 코드입니다.

생성(Create)

user = User(name='John', age=30)
user.save()

조회(Read)

query = User.select().where(User.age > 25)
users = query.execute()

갱신(Update)

user = User.get(User.name == 'John')
user.age = 35
user.save()

삭제(Delete)

user = User.get(User.name == 'John')
user.delete_instance()

결론

Peewee를 사용하여 NoSQL 데이터베이스와 연동하는 방법에 대해 알아보았습니다. Peewee를 통해 간편하게 Python 애플리케이션과 NoSQL 데이터베이스를 연결하여 데이터를 다룰 수 있습니다.