pymongo로 DB조작하기

BBOrong_22·2022년 4월 17일

스파르타 원정

목록 보기
38/52

🧪파이썬으로 MongoDB를 조작해보자

pymongo라는 라이브러리로 조작을할 것이다.
만약에 파이썬으로 엑셀을 조작하려면
파이썬으로 엑셀을 조작할 수 있는 남이 만들어놓은 라이브러리를 이용하면 편할거 같다.
똑같이 파이썬으로 MongoDB를 조작하려고 하면 남이 만들어놓은 pymongo라는 라이브러리를 쓸거다.
setting에서 pymongo를 다운받자.
pythonprac에서 dbprac이라는 PythonFile을 만든다.
pymongo 기본코드를 갖다쓴다.

💬pymongo를 이용하는 4가지

insertfindupdatedelete
row1데이터를 넣는거찾는거데이터 업데이트삭제

insert
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)

▶run
하면 아무것도 안나온다.
👉robo3T를 가본다.
localDB를 refresh하면 dbsparta가 생겼다.
collections>user>오른쪽상단 두번째 아이콘 클릭

🔥기본코드 해석하기

from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta

from pymongo import MongoClient
👉pymongo를 쓰겠다.
client = MongoClient('localhost', 27017)
👉내 컴퓨터에서 지금 돌아가고 있는 mongoDB에 접속할 것이다.
db = client.dbsparta
👉dbsparta라는 db이름으로 접속할 것이다.(없으면 자동으로 만들어진다.)
mongodb는 딕셔너리가 쌓이는 것이다.

doc = {'name':'bobby','age':21}
👉딕셔너리를 만들어줬다.
db.users.insert_one(doc)
👉그 하나 딕셔너리(doc)를 users라는 collection에 넣겠다.

아무리 딕셔너리를 맘대로 쌓을 수 있다 해도 이왕이면 비슷한애들끼리 쌓는게 더 낫기 때문에 콜렉션이라는 개념이 존재한다.
👉db.users.insert_one(doc)
db안에 users라는 collection안에 insert해라
나머지 find/update/delete도 이런 식이다.

🍳insert로 데이터 쌓기

doc = {'name':'jane','age':21}
db.users.insert_one(doc)

응용해서 4개의 딕셔너리를 하나씩 쌓아준다.

🍠find로 데이터 찾기

same_ages = list(db.users.find({'age':21},{'_id':False}))

뭔가를 찾아서 same_ages라는 변수에다 넣은것이다.
print(same_ages)


리스트 안에 딕셔너리 2개가 들어와있는데 age가 21이다
{'age':21}여기가 조건이다.
,{'_id':False})의 _id

이 값인데,이값은 나타내지 말라는 뜻이다.
false를 거의 붙여주는데 이 조건을 없애버리면 _id까지 갖고와 버린다.
자동으로 생성되는 랜덤한 유니크 값이다.불필요하다.

조건없이 모든 document를 find 할 수도 있다.
(db.users.find({}, 중괄호를 비워두면 된다.

여러개 가져올때는 이렇게 하고,

🧂하나만 가져올때는

user = db.users.find_one({'name':'bobby'})
print(user)

bobby 딕셔너리 하나만 가져온다.
_id가져오고 싶지 않으면
user = db.users.find_one({'name':'bobby'},{'_id':False})
여러개 있어도 제일 위에 있는 아이 하나만 가져온다.

🌮update로 데이터 내용물 바꾸기

db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
👉name이 bobby인 애를 찾아서 age를 19로 바꿔라.
▶하고 robo3T가면 바뀌어 있다.
💡collection이름(user)가 맞나 확인하고 run하면 된다.

db.users.update_many({'name':'bobby'},{'$set':{'age':19}})
👉name이 bobby인 애를 모두 찾아서 age를 19로 바꿔라
⚠하지만 update_many는 잘 쓰지 않는다.한번에 다 바꾸는건 리스크가 크다.

delete🥞로 데이터 삭제하기

db.users.delete_one({'name':'bobby'})
▶robo3T가면 name이 bobby인 딕셔너리가 삭제되어있다.

db.users.delete_many({'name':'bobby'})
⚠하지만 delete_many는 잘 쓰지 않는다.한번에 다 바꾸는건 리스크가 크다.

profile
아 스파르타 복습해야한다..

0개의 댓글