pymongo 이용 Python에서 MongoDB 사용하기, CRUD 예제

작성: 2021.03.22

수정: 2021.03.22

읽는시간: 00 분

Programming/Python

반응형

아직 MonboDB 혹은 Robo-3t 설치가 안되어 있으면 먼저 아래 링크를 확인해서 설치해주세요.

shanepark.tistory.com/51

 

macOS) MongoDB 설치하기

docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/ Install MongoDB Community Edition on macOS — MongoDB Manual docs.mongodb.com MongoDB 공식 사이트의 가이드를 참고하며 설치했습니다. 설명이..

shanepark.tistory.com

shanepark.tistory.com/52

 

macOS) robo-3t 설치하기

robomongo.org/download Robomongo Robo 3T: the hobbyist GUI Robo 3T 1.4 brings support for MongoDB 4.2, and a mongo shell upgrade from 4.0 to 4.2, with the ability to manually specify visible databas..

shanepark.tistory.com


 

사용에 앞서 pymongo를 먼저 설치해줍니다.

conda install pymongo

 

저는 Anaconda3를 이용하고 있으니 conda install 명령어를 이용하지만, conda를 사용하지 않는다면, pip install을 이용해서 설치해줍니다.

 


 

1. 간단한 insert 문을 작성해보았습니다.

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017")
mydb = myclient["python"]
mycol = mydb["sample"]

mydict = { "col01" : "shane", "col02" : "28 Highway", "col03" : "123-456-789"}

x = mycol.insert_one(mydict)
print(x.inserted_id)

 

 

작성한 코드를 실행 한 뒤에, DB를 확인해보면 데이터가 잘 들어와있는 것을 알 수 있습니다.

일반적인 RDBMS 에만 익숙해진 상태에서 , 테이블 생성도 안하고 데이터를 다짜고짜 넣어보는건 처음이라 의심이 조금은 되었는데, 문제없이 잘 등록이 된 것을 확인할 수 있습니다.

 

 


 

2. 이번엔 더 간단한 select 문을 작성해보았습니다. w3schools 를 참고했습니다.

www.w3schools.com/python/python_mongodb_find.asp

 

Python MongoDB Find

Python MongoDB Find In MongoDB we use the find and findOne methods to find data in a collection. Just like the SELECT statement is used to find data in a table in a MySQL database. Find One To select data from a collection in MongoDB, we can use the find_o

www.w3schools.com

find() 명령어에 아무 parameter도 주지 않으면, select *과 같은 결과를 준다고 써있습니다.

설마 하는 의구심을 품으며 그대로 코드를 따라해 보았습니다.

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017")
mydb = myclient["python"]
mycol = mydb["sample"]

for x in mycol.find():
    print(x)

실행해보니 find()를 활용해서 정말 간단하게 select * 과 같은 결과를 받아왔습니다.

 

이번에는 col01 값이 shane 인 데이터만 조회하려면 , find 안에 조건을 걸어주면 됩니다.

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017")
mydb = myclient["python"]
mycol = mydb["sample"]

for x in mycol.find({'col01': "shane"}):
    print(x)

원하는 데이터만 받아오는 것을 확인 할 수 있습니다.

 


3. 이번에는 update 문 입니다.

기존의 데이터는 아래와 같습니다.

아래의 코드를 입력하고 실행 해 보면,

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017")
mydb = myclient["python"]
mycol = mydb["sample"]

myquery = {"col01" : "john"}
newValue = {"$set": {"col02" : "Queenstown, NewZealand"}}
mycol.update_one(myquery, newValue)

for x in mycol.find():
    print(x)

 

 

위와 같이 col01의 값이 john 인 row 의 col02 값을 Queenstown, NewZealand로 정상적으로 변경한 것을 확인 할 수 있습니다.

 


4. 마지막으로 delete 입니다.

위 insert, select, update를 하면서 패턴이 익숙해졌다면 너무 쉽게 할 수 있습니다.

한개를 삭제할때는 delete_one, 많은 rows를 삭제할떄는 delete_many 를 이용합니다.

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017")
mydb = myclient["python"]
mycol = mydb["sample"]

myquery = {"col01" : "john"}
mycol.delete_one(myquery)

for x in mycol.find():
    print(x)

 

실행해보니, col01이 john인 데이터가 삭제되어서 하나만 남은 데이터가 조회되는 것을 확인 할 수 있습니다.

NoSQL DBMS 는 처음 써봤는데 정말 간단하고 사용하기가 편해서 놀랐습니다.

반응형