728x90
[1] PyMongo CRUD
- 기본적으로 Shell에서 사용하던 형식을 그대로 사용할 수 있다.
1. INSERT
import pymongo
# mongodb 서버에 접속해서 작업할 수 있도록 MongoClient 객체 생성
client = pymongo.MongoClient("mongodb://XXX.XXX.XXX.XXX:27017")
# database 접속
print(client.list_database_names()) # db 목록 출력
db = client.get_database("sample") # sample db 저장
myscore = db["score"] # sample db 내의 score collection 저장
# 삽입 처리하기
my_dict = [{"name": "장동건", "address": "ssh서울"},
{"name": "이민호", "address": "제주"},
{"name": "소지섭", "address": "강원도"}]
x = myscore.insert_many(my_dict)
2. QUERY
import pymongo
# mongodb 서버에 접속해서 작업할 수 있도록 MongoClient 객체 생성
client = pymongo.MongoClient("mongodb://xxx.xxx.xxx.xxx:27017")
# database 접속
print(client.list_database_names()) # db 목록 출력
db = client.get_database("sample") # sample db 저장
myscore = db["score"] # sample db 내의 score collection 저장
# sample 데이터베이스의 score 컬렉션에서 데이터 조회하기 -1
result = db.score.find_one()
print(result)
# sample 데이터베이스의 score 컬렉션에서 데이터 조회하기 -2
result2 = myscore.find_one()
print(result2)
# 컬렉션의 모든 document 조회
scorelist = myscore.find()
for mydoc in scorelist:
print(mydoc)
print("="*100)
# 컬렉션에서 조건에 맞는 document 조회
scorelist = myscore.find({"java": {"$gte": 90}}, {"id": 1, "name": 1, "dept": 1, "addr": 1})
for mydoc in scorelist:
print(mydoc)
3. UPDATE
import pymongo
# mongodb 서버에 접속해서 작업할 수 있도록 MongoClient 객체 생성
client = pymongo.MongoClient("mongodb://xxx.xxx.xxx.xxx:27017")
# database 접속
print(client.list_database_names()) # db 목록 출력
db = client.get_database("sample") # sample db 저장
myscore = db["score"] # sample db 내의 score collection 저장
scorelist = myscore.find()
for mydoc in scorelist:
print(mydoc)
# 업데이트 처리하기
query = {"id": "jang"}
updatevalue = {"$set": {"name": "장만용"}}
myscore.update_many(query, updatevalue)
scorelist = myscore.find()
for mydoc in scorelist:
print(mydoc)
4. DELETE
import pymongo
# mongodb 서버에 접속해서 작업할 수 있도록 MongoClient 객체 생성
client = pymongo.MongoClient("mongodb://xxx.xxx.xxx.xxx:27017")
# database 접속
print(client.list_database_names()) # db 목록 출력
db = client.get_database("sample") # sample db 저장
myscore = db["score"] # sample db 내의 score collection 저장
scorelist = myscore.find()
for mydoc in scorelist:
print(mydoc)
# 삭제 처리하기
result = myscore.delete_many({"dept": "총무"})
scorelist = myscore.find()
for mydoc in scorelist:
print(mydoc)
[2] PyMongo 연습 예제
1. 미션 내용
mongodb로 다음과 같은 작업을 할 수 있도록 클래스를 작성하세요
1. MongoConnection - 생성자에서 몽고디비 클라이언트를 통해 몽고디비서버에 접속할 수 있도록 합니다.
- getCollection 데이터베이스명과 컬렉션명을 입력받아 컬렉션 을 리턴하도록 작성합니다.
2. Board_Mongo 다음과 같은 조건을 만족할 수 있도록 메소드를 정의하세요
1) getBoardData()
- 게시판의 모든 데이터를 조회할 수 있도록 구현
2) getBoard
- 게시글 번호를 받아서 게시글을 조회할 수 있도록 작업하세요
- 매개변수 : 게시글번호
- 리턴값: 조회된 글
3) write
- 매개변수로 전달받은 데이터를 컬렉션에 저장할 수 있도록 작성합니다.
4) remove
- 매개변수로 전달받은 글 번호에 해당하는 게시글이 삭제되도록 작업합니다.
5) updateBoard
- 글의 타이틀이 수정되도록 작성합니다.
- 매개변수로 글 번호와 수정할 타이틀 내용을 입력받아 처리합니다.
6) search
- 매개변수로 입력된 문자열이 게시글과 타이틀에 포함된 게시글을 찾아 출력
- 매개변수는 검색어
3. board_test.py를 작성하시고 위의 6개의 메소드를 테스트하세요
2. CODE
1) MongoConnection.py
import pymongo
from datetime import datetime
class MongoConnection:
def __init__(self, ip, port):
self.client = pymongo.MongoClient("mongodb://"+ip+":"+port)
def getCollection(self, db_name, collection_name):
db = self.client.get_database(db_name)
collection = db.get_collection(collection_name)
return collection
class Board_Mongo:
def __init__(self):
connect = MongoConnection("XXX.XXX.XXX.XXX", "27017")
self.collection = connect.getCollection("sample", "board")
def getBoardData(self):
objs = self.collection.find()
for obj in objs:
print(obj)
def getBoard(self, no):
obj = self.collection.find_one({"no": no})
print(obj)
def write(self, data):
data["writedate"] = datetime.now()
self.collection.insert_one(data)
def remove(self, no):
self.collection.delete_one({"no": no})
def updateBoard(self, no, title):
query = {"no": no}
update_title = {"$set": {"title": title}}
self.collection.update_one(query, update_title)
def search(self, search_string):
query = {"$or": [{"title": {"$regex": search_string}}, {"content": {"$regex": search_string}}]}
objs = self.collection.find(query)
for obj in objs:
print(obj)
2) board_test.py
from MongoConnection import Board_Mongo
board = Board_Mongo()
board.getBoardData() # OK
print("="*100)
board.getBoard(1) # OK
print("="*100)
board.getBoard(2) # OK
# board.write({"no": 9, "id": "id09", "title": "title09", "content": "content09", "count": 100}) #OK
# board.remove(6) # OK
# board.updateBoard(6, "title 변경") #OK
print("="*100)
board.search("추") # OK
- 끝 -
728x90
'프로젝트형 IoT 서비스 개발 4회차 > 3. 게이트웨이 디바이스 제어' 카테고리의 다른 글
[Day51] 2022-04-11(월) 라즈베리파이 준비4 - VNC, GPIO 사용 준비 - 김서연 강사님 (0) | 2022.04.11 |
---|---|
[Day51] 2022-04-11(월) 리눅스 명령어 - 김서연 강사님 (0) | 2022.04.11 |
[Day50] 2022-04-08(금) 라즈베리파이 준비3 - Win32DiskImager로 이미지 굽기, 업데이트 - 김서연 강사님 (0) | 2022.04.08 |
[Day49] 2022-04-07(목) MongoDB4 - Aggregation, PyMongo Setting - 김서연 강사님 (0) | 2022.04.07 |
[Day48] 2022-04-06(수) MongoDB3 - CRUD2(QUERY, DELETE) - 김서연 강사님 (0) | 2022.04.06 |