728x90
728x90

파이썬(Python)으로 MongoDB 사용하기 (pymongo)

들어가며

  • 파이썬(Python)으로 MongoDB를 사용하는 방법을 간단하게 정리해본다.

 

MongoDB

개념

  • NoSQL 데이터베이스
  • 유연한 스키마 JSON과 유사한 문서 구조를 제공한다.
  • 파이썬(Python)에서 MongoDB를 사용하려면 @pymongo@ 라이브러리를 사용해야 한다.
    • @pymongo@ 라이브러리는 MongoDB와의 상호작용을 간단하게 해주는 파이썬 클라이언트이다.
  • MongoDB에서는 데이터베이스 내에 컬렉션(Collection)이라는 단위로 데이터를 저장한다. 
    • 또 컬렉션 안에는 문서(Document)가 들어간다. (데이터)

ⓒ GeeksforGeeks

 

설치하기

  • 파이썬에서 MongoDB를 사용하기 위해서는 @pymongo@ 라이브러리를 설치해줘야 한다.
$ pip install pymongo

 

MongoDB 서버 연결하기

  • @MongoClient@를 이용하여 MongoDB 서버에 연결한다.
  • 기본적으로 로컬 MongoDB 서버는 @localhost@와 포트 @27017@에서 실행된다.
from pymongo import MongoClient

# MongoDB 로컬 서버에 연결
# client = MongoClient('mongodb://localhost:27017/')

# MongoDB 클라우드 서버에 연결
client = MongoClient('mongodb+srv://{connect_info["id"]}:{connect_info["pw"]}@{connect_info["cluster"]}.dq234dsc.mongodb.net/{connect_info["database"]}?retryWrites=true&w=majority&appName={connect_info["appName"]}') 

# 특정 데이터베이스 선택
db = client['mydatabase']

# 컬렉션 선택
collection = db['mycollection']

 

MongoDB 클라우드 서버에 연결하기

  • 아래와 같이 Overview 페이지의 @[Connect]@ 버튼을 눌러 연결 문자열(Connection String)연동 예시 코드를 확인할 수 있다.
1. @[Connect]@ 버튼 클릭 2. @[Drivers]@ 클릭



3. 연결 문자열 확인 및 복사  
 

 

연결 문자열(Connection String)의 구조

  • 아래와 같이 아이디(@id@), 비밀번호(@pw@), 데이터베이스(@database@), 클러스터(@cluster@), 앱이름(@appName@)이 연결 문자열에 들어가게 된다.
connect_info = {
    "id": "myid",
    "pw": "mypw",
    "database": "mydatabase",
    "cluster": "cluster0",
    "appName": "Cluster0"
}


uri = f"mongodb+srv://{connect_info["id"]}:{connect_info["pw"]}@{connect_info["cluster"]}.dq234dsc.mongodb.net/{connect_info["database"]}?retryWrites=true&w=majority&appName={connect_info["appName"]}"

 

데이터 삽입하기 (INSERT)

  • 문서(Document)라고 불리는 데이터를 컬렉션에 삽입할 수 있다.
  • 문서는 JSON과 유사한 형식을 가지며, 파이썬에서는 딕셔너리(Dictionary)로 표현된다.
  • 단일 문서를 넣을 때는 @insert_one@ 메서드를, 여러 문서를 넣을 때는 @insert_many@ 메서드를 사용한다.
# 단일 문서 삽입
collection.insert_one({'name': 'Alice', 'age': 25})

# 여러 문서 삽입
documents = [
    {'name': 'Bob', 'age': 30},
    {'name': 'Charlie', 'age': 35}
]
collection.insert_many(documents)

 

데이터 조회하기 (SELECT)

  • 문서를 조회할 때는 @find_one@@find@ 메서드를 사용할 수 있다.
# 단일 문서 조회
person = collection.find_one({'name': 'Alice'})
print(person)

# 조건에 맞는 모든 문서 조회
for person in collection.find({'age': {'$gte': 30}}):
    print(person)

 

데이터 수정하기 (UPDATE)

  • 문서를 수정하려면 @update_one@이나 @update_many@ 메서드를 사용할 수 있다.
# 단일 문서 수정
collection.update_one(
    {'name': 'Alice'},
    {'$set': {'age': 26}}
)

# 여러 문서 수정
collection.update_many(
    {'age': {'$gte': 30}},
    {'$set': {'status': 'Senior'}}
)

 

데이터 삭제하기 (DELETE)

  • 문서를 삭제하려면 @delete_one@이나 @delete_many@ 메서드를 사용할 수 있다.
# 단일 문서 삭제
collection.delete_one({'name': 'Alice'})

# 여러 문서 삭제
collection.delete_many({'age': {'$lt': 30}})

 

인덱스 생성하기

  • 컬렉션의 기능을 개선하기 위해 인덱스(Index)를 생성할 수 있다.
  • @create_index@ 메서드를 사용한다.
# 인덱스 생성
collection.create_index([('name', pymongo.ASCENDING)])

 

데이터베이스와 컬렉션 삭제하기

# 컬렉션 삭제
db.drop_collection('mycollection')

# 데이터베이스 삭제
client.drop_database('mydatabase')

 

참고 사이트

 

MongoDB 문서

공식 MongoDB 문서에 오신 것을 환영합니다. 개발자, 데이터베이스 관리자, MongoDB를 이제 막 사용하기 시작하는 사용자 모두를 위해 설명서를 통해 MongoDB 및 Atlas 개발자 데이터 플랫폼에서 애플리

www.mongodb.com

 

728x90
728x90