IT/Python

[Python] MongoDB와 파이썬 연동하기

멋진 선배 2025. 1. 16. 01:06
반응형

파이썬에서 MongoDB를 연동하고 사용하는 방법에 대해서 자세하게 알아보도록 하겠습니다. MongoDB는 NoSQL 데이터베이스로, 유연하고 확장성이 뛰어나 많은 개발자들이 선호하고 있습니다.

MongoDB와 파이썬 설치하기

먼저 필요한 도구들을 설치해 볼까요?

  1. MongoDB 설치
  2. PyMong라이브러리 설치
pip install pymongo

MongoDB 연결하기

MongoDB와 파이썬을 연결하는 기본 코드 입니다.

from pymongo import MongoClient

try:
    # MongoDB 연결
    client = MongoClient('mongodb://localhost:27017/')
    
    # 데이터베이스 선택
    db = client['my_database']
    
    print("MongoDB에 성공적으로 연결되었습니다!")
    
except Exception as e:
    print(f"연결 중 오류가 발생했습니다: {e}")

컬렉션 생성 및 관리

MongoDB에서 컬렉션을 생성하고 관리하는 방법을 알아볼까요?

# 컬렉션 생성
users_collection = db['users']

# 문서 하나 삽입
user_data = {
    "name": "홍길동",
    "email": "hong@example.com",
    "age": 25
}
result = users_collection.insert_one(user_data)
print(f"삽입된 문서의 ID: {result.inserted_id}")

데이터 조회하기

단일 문서 조회

def find_user(name):
    user = users_collection.find_one({"name": name})
    if user:
        print(f"사용자를 찾았습니다: {user}")
    else:
        print("사용자를 찾을 수 없습니다.")

 

여려 문서 조회

def find_all_users():
    users = users_collection.find()
    for user in users:
        print(user)

 

데이터 수정하기

def update_user_age(name, new_age):
    result = users_collection.update_one(
        {"name": name},
        {"$set": {"age": new_age}}
    )
    if result.modified_count > 0:
        print("사용자 정보가 성공적으로 수정되었습니다!")
    else:
        print("수정할 사용자를 찾을 수 없습니다.")

 

데이터 삭제하기

def delete_user(name):
    result = users_collection.delete_one({"name": name})
    if result.deleted_count > 0:
        print("사용자가 성공적으로 삭제되었습니다!")
    else:
        print("삭제할 사용자를 찾을 수 없습니다.")

고급 쿼리 작성

조건 검색

def find_users_by_age_range(min_age, max_age):
    query = {
        "age": {
            "$gte": min_age,
            "$lte": max_age
        }
    }
    users = users_collection.find(query)
    for user in users:
        print(user)

 

정렬하기

def get_users_sorted_by_age():
    users = users_collection.find().sort("age", 1)  # 1은 오름차순, -1은 내림차순
    for user in users:
        print(user)

실전 활용 팁

1. 연결하기

from contextlib import contextmanager

@contextmanager
def get_mongo_client():
    client = MongoClient('mongodb://localhost:27017/')
    try:
        yield client
    finally:
        client.close()

# 사용 예시
with get_mongo_client() as client:
    db = client['my_database']
    users = db.users.find()

 

2.벌크 연산 수행하기

def bulk_insert_users(users_data):
    result = users_collection.insert_many(users_data)
    print(f"{len(result.inserted_ids)}개의 문서가 삽입되었습니다!")

보안 관련 팁

1. 환경 변수 사용하기

import os
from dotenv import load_dotenv

load_dotenv()
MONGO_URI = os.getenv('MONGO_URI')
client = MongoClient(MONGO_URI)

 

2. 인덱스 생성하기

# 이메일 필드에 유니크 인덱스 생성
users_collection.create_index("email", unique=True)

 

마무리

지금까지 MongoDB와 파이썬을 연동하는 방법에 대해 알아보겠습니다. MongoDB는 유연하고 확장성이 뛰어난 데이터베이스이며, 파이썬과 함께 사용하면 더욱 강력한 애플리케이션을 만들수 있습니다.

반응형