728x90
728x90
파이썬(Python)으로 MongoDB 사용하기 (pymongo)
들어가며
- 파이썬(Python)으로 MongoDB를 사용하는 방법을 간단하게 정리해본다.
MongoDB
개념
- NoSQL 데이터베이스
- 유연한 스키마와 JSON과 유사한 문서 구조를 제공한다.
- 파이썬(Python)에서 MongoDB를 사용하려면 @pymongo@ 라이브러리를 사용해야 한다.
- @pymongo@ 라이브러리는 MongoDB와의 상호작용을 간단하게 해주는 파이썬 클라이언트이다.
- MongoDB에서는 데이터베이스 내에 컬렉션(Collection)이라는 단위로 데이터를 저장한다.
- 또 컬렉션 안에는 문서(Document)가 들어간다. (데이터)
설치하기
- 파이썬에서 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')
참고 사이트
728x90
728x90