본문 바로가기
DataBase/NoSQL

[NoSQL] python에서 MongoDB연동시키기

by 스파이디웹 2021. 1. 14.
728x90

일단 MongoDB와 python을 연동시키기 위해서는 python 라이브러리인 pymongo가 있어야 한다.

 

cmd창을 열고

와 같이 pymongo를 다운받도록 한다.

 

이후 간단한 crud를 해보도록 할건데, 미리 CRUD관련된 클래스를 만들어두고 쓰면 편리하기 때문에,

구현 해두고 확인해보겠습니다.

 

from pymongo import MongoClient
from pymongo.cursor import CursorType

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

1)위 와 같이 mongodb로 미리 생성해둔 데이터베이스 pymongo에 {"text":"Hello Python"}데이터를 입력시켰습니다.

2)mongo script로 확인해보니 잘 들어가 있습니다.

3)클래스에 있는 mongoDB 데이터 확인 메소드로도 확인을 해보았습니다.

4)find_item_one 메소드는 가장 첫줄에 나온 데이터를 보여주었고

find_item 메소드는 해당 커서 객체값을 16진수로 보여주었습니다.

 

#delete_item, update_item 등 나머지의 메소드들고 마찬가지로 클래스에 구현된대로 적용해보면 연동이 된 것을 알 수 있습니다.

728x90

댓글