오늘은 pymongo의 CRUD를 활용해서, 가벼운 프로그램을 만들어보겠습니다!
1. MONGO DB CONNECTION
from pymongo import MongoClient
import pandas as pd
from tabulate import tabulate
from bson.objectid import ObjectId
def connect_mongodb():
client = MongoClient("mongodb://localhost:27017")
mydb = client["signup"]
mycoll = mydb["userinfo"]
return mycoll
Mongo DB에 연결합니다. 저는 database는 signup, collection으로는 userinfo를 사용했습니다.
2. 회원 조회 기능(Find ≒ Select)
# 전체 회원 조회 1
def select_all(coll): # find 쿼리 할 때
result = list(coll.find())
df = pd.DataFrame(result)
df = tabulate(df,headers="keys",tablefmt="psql",showindex=False)
print(df)
# 특정 회원 조회 2
def select_one(coll): # findOne 쿼리 할 때
user_id = int(input('조회하려는 회원 아이디를 입력해주세요 : '))
result = coll.find({'_id' : user_id})
df = pd.DataFrame(result)
df = tabulate(df,headers="keys",tablefmt="psql",showindex=False)
print(df)
tabulate를 활용해서 데이터프레임을 터미널에서 깔끔하게 출력할 수 있습니다. 회원 조회에는 find 쿼리를 이용하고, 판다스를 이용해서 데이터프레임 형식으로 출력합니다. 이 때, find의 조건은 예쁘게 나오는게 조건입니다.
3. 회원가입(Insert)
# 회원가입 3
def insert_one(coll, info):
last_doc = coll.find_one(sort=[("_id", -1)])
if last_doc == None:
last_id = 0
else :
last_id = last_doc["_id"] if last_doc else 0
mydict = {
"_id": last_id + 1,
"name": info[0],
"age": info[1],
"address": info[2],
"phone": info[3]
}
coll.insert_one(mydict)
def user_signup(coll):
name = input("이름을 입력하세요 : ")
age = input("나이을 입력하세요 : ")
address = input("주소를 입력하세요 : ")
phone = input("번호를 입력하세요 : ")
result = [name, age, address, phone]
insert_one(coll, result)
id와, 각종 변수를 이용해서 INSERT합니다. 특히 id를 추가하기 위해서, 마지막 id를 조회하고 해당 아이디를 기준으로 1을 더합니다.
4. 회원 정보 수정 기능(Update)
# 회원수정 4
def update_one(coll):
# db.update_one({조건}, {변경할 값})
user_number = int(input("회원번호를 입력해주세요 : "))
update_key = input("바꾸고 싶은 것이 무엇입니까? : ")
update_value = input("바꿀 값을 말해주세요 : ")
update_arg_1 = {'_id' : user_number} # 조건을 바꾸고 싶다면 이 부분에 key,value 형태로 검색 조건 구현
update_arg_2 = {"$set" : {update_key: update_value}}
coll.update_one(update_arg_1, update_arg_2)
mongo db의 update 쿼리를 이용합니다. $set을 사용해서 회원을 수정합니다.
5. 회원 삭제(Delete)
def delete_by_id(coll):
user_id = int(input('삭제하고자 하는 회원 아이디를 입력해주세요 : '))
coll.delete_many({"_id": user_id})
print(f"{user_id}가 삭제되었습니다.")
삭제하고자 하는 회원 id를 조건으로 받고, delete_many를 활용해서 조건 기반으로 삭제합니다.
6. 프로그램 동작
if __name__ == '__main__':
coll = connect_mongodb()
while True:
control = int(input('전체 회원 조회: 1 / 특정 회원 조회 : 2 / 회원가입 : 3 / 회원수정 : 4 / 회원 삭제 : 5 / 종료하고자하면 이 외 다른 키 입력 :'))
if control == 1:
select_all(coll)
elif control == 2:
select_one(coll)
elif control == 3:
user_signup(coll)
elif control == 4:
update_one(coll)
elif control == 5:
delete_by_id(coll)
else :
break
오늘의 pymongo를 활용한 포스팅이였습니다. 감사합니다:)
'데이터 엔지니어링 > 하둡 에코 시스템' 카테고리의 다른 글
[MONGODB] 몽고DB 로컬에 설치하고 파이썬 연동하기 (0) | 2023.05.18 |
---|---|
[HIVE] 기본 개념 및 실습 (0) | 2023.05.16 |
[PIG] 기본 개념 및 실습 (0) | 2023.05.12 |
[Flume] 기본 개념 및 설치 (0) | 2023.05.10 |