본문 바로가기
DB/DataBase

[MongoDB - Python] Python으로 mongoDB에 데이터 쓰고 읽기

by _S0_H2_ 2022. 2. 15.
728x90
반응형

1. python에서 mongoDB용 library를 설치한다.

python -m pip install pymongo

확인해보기

from pymongo import MongoClient
from pymongo.cursor import CursorType

host = "localhost"
port = "27017"
mongo = MongoClient(host, int(port))
print(mongo)

2. python에서 mongoDB CRUD를 위한 Class를 작성한다.

class DBHandler:
    def __init__(self):
        host = "localhost"
        port = "27017"
        self.client = MongoClient(host, int(port))

    def insert_item_one(self, data, db_name=None, collection_name=None):
        result = self.client[db_name][collection_name].insert_one(data).inserted_id
        return result

    def insert_item_many(self, datas, db_name=None, collection_name=None):
        result = self.client[db_name][collection_name].insert_many(datas).inserted_ids
        return result

    def find_item_one(self, condition=None, db_name=None, collection_name=None):
        result = self.client[db_name][collection_name].find_one(condition, {"_id": False})
        return result

    def find_item(self, condition=None, db_name=None, collection_name=None):
        result = self.client[db_name][collection_name].find(condition, {"_id": False}, no_cursor_timeout=True, cursor_type=CursorType.EXHAUST)
        return result

    def delete_item_one(self, condition=None, db_name=None, collection_name=None):
        result = self.client[db_name][collection_name].delete_one(condition)
        return result

    def delete_item_many(self, condition=None, db_name=None, collection_name=None):
        result = self.client[db_name][collection_name].delete_many(condition)
        return result

    def update_item_one(self, condition=None, update_value=None, db_name=None, collection_name=None):
        result = self.client[db_name][collection_name].update_one(filter=condition, update=update_value)
        return result

    def update_item_many(self, condition=None, update_value=None, db_name=None, collection_name=None):
        result = self.client[db_name][collection_name].update_many(filter=condition, update=update_value)
        return result

    def text_search(self, text=None, db_name=None, collection_name=None):
        result = self.client[db_name][collection_name].find({"$text": {"$search": text}})
        return result

 

3. 데이터를 하나 넣어보자.

mongo = DBHandler()
insert_item_one(mongo, {"id": "node01", "type":"normal"}, "RawData", "Node")

새로 고침 후 Node collection에서 다음을 확인할 수 있다.

여러 개의 data를 넣어서 다음과 같이 filtering 해서 볼 수도 있다.

총 99개의 data 중 90개의 결과가 나온다.

넣은 데이터들을 python에서 다시 읽어보자.

조건을 넣어서 필터링하면 다음과 같이 나온다.

import pandas as pd
mongo = DBHandler()

Node = pd.DataFrame(mongo.find_item({'type': 'normal'}, 'RawData', 'Node'))

728x90
반응형

'DB > DataBase' 카테고리의 다른 글

[MongoDB] MongoDB 설치하기  (0) 2022.02.15
[MariaDB]CRUD  (0) 2021.02.16