📕 들어가며

이번 글에서는

파이썬 개발 환경에서 pymongo 패키지를 활용해

MongoDB 데이터베이스를 조작하는 방법에 대해 배워보겠습니다.










📕 본문

pymongo 패키지를 활용해서
CRUD 작업을 하나씩 진행해보도록 하겠습니다. ^^




✏️1. CREATE

inventory 컬렉션에 여러 데이터들을 넣어보겠습니다.

# CREATE
# !pip install pymongo (pymongo 패키지 설치)

import pymongo

# mongodb connection 연결
connection = pymongo.MongoClient("mongodb://localhost:27017/")

# 데이터베이스를 찾는다.
database = connection["test"]

# 데이터베이스에서 컬렉션을 찾는다.
collection = database["inventory"]

# 쿼리문 작성
query = [
   { "item": "canvas", "qty": 100, "size": {"h": 28, "w": 35.5, "uom": "cm" }, "status": "A"},
   { "item": "journal", "qty": 25, "size": { "h": 14, "w": 21, "uom": "cm" }, "status": "A" },
   { "item": "mat", "qty": 85, "size": { "h": 27.9, "w": 35.5, "uom": "cm" }, "status": "A" },
   { "item": "mousepad", "qty": 25, "size": { "h": 19, "w": 22.85, "uom": "cm" }, "status": "P" },
   { "item": "notebook", "qty": 50, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "P" },
   { "item": "paper", "qty": 100, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "D" },
   { "item": "planner", "qty": 75, "size": { "h": 22.85, "w": 30, "uom": "cm" }, "status": "D" },
   { "item": "postcard", "qty": 45, "size": { "h": 10, "w": 15.25, "uom": "cm" }, "status": "A" },
   { "item": "sketchbook", "qty": 80, "size": { "h": 14, "w": 21, "uom": "cm" }, "status": "A" },
   { "item": "sketch pad", "qty": 95, "size": { "h": 22.85, "w": 30.5, "uom": "cm" }, "status": "A" }
]

# 쿼리한다.
result = collection.insert_many(query)

# 쿼리 실행결과 확인
print("실행 결과:", result.acknowledged)
print("입력 데이터 개수:", len(result.inserted_ids))

# connection 종료
connection.close()



<실행결과> : 10건의 데이터가 생성되었습니다.



















✏️2. READ

inventory 컬렉션의 데이터 중
status가 A인 데이터를 조회해 보겠습니다.

# READ

# !pip install pymongo (pymongo 패키지 설치)
import pymongo

# mongodb connection 연결
connection = pymongo.MongoClient("mongodb://localhost:27017/")

# 데이터베이스를 찾는다.
database = connection["test"]

# 데이터베이스에서 컬렉션을 찾는다.
collection = database["inventory"]

# 쿼리문 작성
query = { "status": "A" }

# 쿼리한다.
datas = collection.find(query)

# 쿼리 실행결과 확인
for data in datas:
    print(data)

# connection 종료
connection.close()  

<실행결과> : 조건에 맞는 5건의 데이터가 datas에 담겨있습니다.



















✏️3. UPDATE

inventory 컬력션에서
qty가 50보다 작은 데이터들의
size.uom을 in으로
status를 P로 수정하겠습니다.

# UPDATE

# !pip install pymongo (pymongo 패키지 설치)
import pymongo

# mongodb connection 연결
connection = pymongo.MongoClient("mongodb://localhost:27017/")

# 데이터베이스를 찾는다.
database = connection["test"]

# 데이터베이스에서 컬렉션을 찾는다.
collection = database["inventory"]

# 쿼리문 작성
filter_query =  { "qty": { "$lt": 50 } }
update_query = {"$set": { "size.uom": "in", "status": "P" }}

# 쿼리한다.
result = collection.update_many(filter_query, update_query)

# 쿼리 실행결과 확인
print("실행 결과:", result.acknowledged)
print("입력 데이터 개수:", result.modified_count)



<실행결과> : 3건의 데이터가 수정되었습니다.

















✏️4. DELETE

inventory 컬렉션에서
status가 A인 데이터를 삭제하겠습니다.

# DELETE

# !pip install pymongo (pymongo 패키지 설치)
import pymongo

# mongodb connection 연결
connection = pymongo.MongoClient("mongodb://localhost:27017/")

# 데이터베이스를 찾는다.
database = connection["test"]

# 데이터베이스에서 컬렉션을 찾는다.
collection = database["inventory"]

# 쿼리문 작성
query = { "status" : "A" }

# 쿼리한다.
result = collection.delete_many(query)

# 쿼리 실행결과 확인
print("실행 결과:", result.acknowledged)
print("입력 데이터 개수:", result.deleted_count)

<실행결과> : 조건에 해당하는 데이터 4건 삭제
















📕 기타

🖊️ 1. with문과 함께 사용

자원 자동 반환을 위해 with문과 함께 사용할 수 있습니다.

# with문과 함께 사용

# !pip install pymongo (pymongo 패키지 설치)
import pymongo

# mongodb connection 연결
with pymongo.MongoClient("mongodb://localhost:27017/") as connection:

    # 데이터베이스를 찾는다.
    database = connection["test"]

    # 데이터베이스에서 컬렉션을 찾는다.
    collection = database["inventory"]

    # 쿼리문 작성
    query = {}

    # 쿼리한다.
    datas = collection.find(query)

    # 쿼리 실행결과 확인
    for data in datas:
        print(data)



<실행결과> : 5건의 데이터가 조회되었습니다.













🖊️ 2. 쿼리 결과를 pandas 데이터 프레임으로 변환

데이터 분석을 위해
쿼리 결과를 pandas DataFrame으로 변형할 수 있습니다.

# 쿼리 실행결과를 pandas DataFrame 형태로 변환

# !pip install pymongo (pymongo 패키지 설치)
import pymongo

# mongodb connection 연결
with pymongo.MongoClient("mongodb://localhost:27017/") as connection:

    # 데이터베이스를 찾는다.
    database = connection["test"]

    # 데이터베이스에서 컬렉션을 찾는다.
    collection = database["inventory"]

    # 쿼리문 작성
    query = {}

    # 쿼리한다.
    datas = collection.find(query)

    # 쿼리 실행결과를 DataFrame 형태로 변환
    li = []

    for data in datas:
        li.append(data)

    dataframe = pd.DataFrame(li)



<실행결과> : dataframe에 데이터가 잘 담겨 있습니다.













profile
1.01^365

0개의 댓글