[파이썬] mongoengine 데이터베이스 참조 연동하기

Mongoengine는 파이썬에서 MongoDB를 사용하기 위한 객체 문서 매핑 라이브러리입니다. 이 라이브러리를 사용하면 MongoDB 데이터베이스와 파이썬 객체 간의 관계를 손쉽게 매핑할 수 있습니다.

이번 블로그 포스트에서는 Mongoengine를 사용하여 데이터베이스에서 문서를 조회하고 연동하는 방법을 알아보겠습니다.

설치 및 설정

Mongoengine를 사용하기 위해서는 먼저 설치가 필요합니다. 아래의 명령을 사용하여 mongoengine를 설치할 수 있습니다.

pip install mongoengine

그리고 아래와 같이 mongoengine 모듈을 가져옵니다.

import mongoengine

이제 참조할 데이터베이스에 연결하기 위해 MongoDB의 주소와 포트를 지정해야 합니다. 아래와 같이 연결 코드를 작성합니다.

mongoengine.connect('mydatabase', host='localhost', port=27017)

위의 코드에서 mydatabase는 사용할 데이터베이스의 이름입니다. 호스트와 포트는 해당 MongoDB 서버에 맞게 변경해야 합니다.

문서 생성하기

데이터베이스에 있는 문서를 연동하기 위해서는 해당 문서에 대한 클래스를 생성해야 합니다. 예를 들어, 사용자를 나타내는 User 클래스를 생성해보겠습니다.

class User(mongoengine.Document):
    name = mongoengine.StringField(required=True)
    age = mongoengine.IntField()

위의 코드에서 User 클래스는 mongoengine.Document를 상속받습니다. 필드들은 mongoengine.StringField, mongoengine.IntField와 같은 필드 타입을 사용하여 선언합니다. 필드는 해당 문서에 저장될 데이터의 형식을 결정합니다.

문서 조회하기

이제 User 문서와 연동하여 데이터베이스에서 문서를 조회해보겠습니다. 아래의 코드를 사용하면 데이터베이스에 있는 모든 사용자를 조회할 수 있습니다.

users = User.objects()
for user in users:
    print('Name:', user.name)
    if user.age:
        print('Age:', user.age)
    print('---')

위의 코드에서 User.objects()User 문서의 모든 객체를 반환하는 메서드입니다. for 문을 사용하여 각 사용자의 이름과 나이를 출력합니다. 사용자의 나이는 선택 사항이므로, 존재하는 경우에만 출력하도록 조건문을 사용합니다.

문서 추가하기

새로운 사용자를 데이터베이스에 추가하는 방법을 알아보겠습니다. 아래의 코드를 사용하여 User 객체를 생성하고, save() 메서드를 호출하여 데이터베이스에 저장합니다.

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

위의 코드에서 nameageUser 클래스의 필드와 일치해야 합니다. save() 메서드를 호출하여 새로운 사용자를 데이터베이스에 저장합니다.

문서 업데이트하기

데이터베이스에 있는 문서를 업데이트하는 방법에 대해 알아보겠습니다. 아래의 코드를 사용하면 특정 사용자의 나이를 업데이트할 수 있습니다.

user = User.objects(name='John Doe').first()
if user:
    user.age = 35
    user.save()

위의 코드에서 User.objects(name='John Doe')는 이름이 ‘John Doe’인 사용자를 조회하여 첫 번째 사용자를 반환하는 쿼리입니다. 사용자를 찾은 후에는 나이를 업데이트하고, save() 메서드를 호출하여 변경 사항을 데이터베이스에 저장합니다.

문서 삭제하기

데이터베이스에서 문서를 삭제하는 방법을 알아보겠습니다. 아래의 코드를 사용하면 특정 사용자를 데이터베이스에서 삭제할 수 있습니다.

user = User.objects(name='John Doe').first()
if user:
    user.delete()

위의 코드에서 User.objects(name='John Doe')는 이름이 ‘John Doe’인 사용자를 조회하여 첫 번째 사용자를 반환하는 쿼리입니다. 사용자를 찾은 후에는 delete() 메서드를 호출하여 해당 사용자를 데이터베이스에서 삭제합니다.

결론

이제 MongoDB 데이터베이스를 사용하여 Mongoengine를 이용해 문서를 참조하고 연동하는 방법에 대해 알아보았습니다. 이를 통해 파이썬으로 MongoDB 데이터베이스와 상호작용할 수 있으며, 문서 조회, 추가, 업데이트, 삭제 등 다양한 작업을 수행할 수 있습니다.