안녕하세요 대무무입니다.
저는 지금까지 Python 으로 개발해오면서 MongoDB 접근 및 관리 시 PyMongo 를 사용했었습니다. 어느 날 ODM(Object Document Mapper) 를 지원하는 라이브러리가 있다는 사실을 알게 되어 정리하려 합니다.
PyMongo
- MongoDB 공식 Python 드라이버이며 MongoDB 와 직접 상호작용 할 수 있게 하는 저수준 API 를 제공한다.
- 쿼리 언어를 사용하여 관리가 가능하며 MongoDB 네이티브 작업에 직접 매핑을 제공한다.
- Github 를 통해 Open Source 프로젝트로 제공한다.
import uuid
from pymongo import MongoClient
mongo_client = MongoClient([MONGO_DB_URL])
db_collection = mongo_client['db']['collection']
# email 이 "damho1104@gmail.com" 인 Document 1개 검색
db_collection.find_one({'email': "damho1104@gmail.com"})
# 이름이 "TEST_NAME" 이고 이메일이 "damho1104@gmail.com" 인 Document 1개 생성
db_collection.insert_one({
'_id': str(uuid.uuid4()),
'name': "TEST_NAME",
'email': "damho1104@gmail.com",
})
MongoEngine
- MongoDB 의 Document 를 코드의 객체와 매핑 가능한 라이브러리(ODM, Object-Document Mapper)
- 프로젝트의 목표: ORM 라이브러리와 유사한 MongoDB 를 위한 라이브러리를 만드는 것
- 2015년에 Open Source 프로젝트로 출시되었으며 현재 PyMongo 를 사용하여 구축되었음
from mongoengine import *
connect(host="[MONGO_DB_URL]/db")
class User(Document):
name = StringField()
email = StringField()
# email 이 "damho1104@gmail.com" 인 Document 1개 검색
user = User.objects.get(email="damho1104@gmail.com")
# 이름이 "TEST_NAME" 이고 이메일이 "damho1104@gmail.com" 인 Document 1개 생성
User(name="TEST_NAME", email="damho1104@gmail.com").save()
정리
MongoEngine 은 PyMongo 의 high-level 라이브러리로써 객체를 바로 매핑시켜버리니 Python 으로 스크립팅 코드를 작성하는게 아닌 Flask 나 FastAPI 를 사용한 웹 서버를 개발할 때 매우 유용할 것으로 보인다. 만일 Python 으로 스크립트 코드를 작성할 때 MongoDB 에 접근하여 꼭 ODM 으로 쓸 필요 없는 Document 를 가져오거나 관리하는 경우엔 PyMongo 만 사용해도 될 것으로 보인다. 그리고 MongoEngine 은 JPA 에서의 N+1 같은 특정 성능 이슈가 발생할 수 있어 보여 동작 과정을 정확히 알고 사용해야 유익할 것으로 보인다. 이제 MongoEngine 을 한번 사용해봐야겠다.
Reference
https://www.mongodb.com/compatibility/mongoengine-pymongo
Mongoengine Vs Pymongo | MongoDB Flask Setup | MongoDB
Learn about the differences between MongoEngine and PyMongo, and how to use both of them in a Flask application in Python.
www.mongodb.com
MongoEngine User Documentation — MongoEngine 0.27.0 documentation
© Copyright 2009, MongoEngine Authors Revision 090e6e1e.
docs.mongoengine.org
https://www.mongodb.com/docs/drivers/pymongo
PyMongo — MongoDB Drivers
Docs Home → MongoDB Drivers Welcome to the documentation site for PyMongo, the official MongoDB driver for synchronous Python applications. Download it using pip or set up a runnable project by following our tutorial.If you need to access MongoDB in a no
www.mongodb.com
'개발' 카테고리의 다른 글
VM vs Container: 고성능 앱 배포를 위한 최적 선택은? (VM 격리 vs 컨테이너 효율성) (1) | 2025.03.07 |
---|---|
생각하는 LLM 모델: DeepSeek-R1 및 QLASS가 AI의 논리적 사고를 혁신하는 방법 (1) | 2025.03.03 |
MLOps 마스터하기: 자동화된 머신러닝 모델 개발부터 배포까지 5단계 가이드 (3) | 2025.02.05 |
[Python] 텔레그램 봇 기능 사용해보기 part 2 (0) | 2024.01.17 |
[Python] 텔레그램 봇 기능 사용해보기 (0) | 2024.01.14 |