스파르타 웹개발 종합반 3주차 - pymongo로 DB 조작해보기
이전에 추가한 데이터에서 다른 데이터를 몇개 더 추가했다.
세명의 데이터를 더 추가 한뒤에 실습을 시작했다.
데이터 가져오기
from pymongo import MongoClient
import certifi
ca = certifi.where()
client = MongoClient('mongodb+srv://test:[email protected]/Cluster0?retryWrites=true&w=majority', tlsCAFile=ca )
db = client.dbsparta
all_users = list(db.users.find({},{'_id':False}))
for user in all_users:
print(user)
from pymongo import MongoClient
import certifi
ca = certifi.where()
client = MongoClient('mongodb+srv://test:[email protected]/Cluster0?retryWrites=true&w=majority', tlsCAFile=ca )
db = client.dbsparta
all_users = list(db.users.find({},{'_id':False}))
for user in all_users:
print(user)
list(db.users.find({},{'_id':False}))
db 에 있는 데이터를 모두 꺼내온다. 단, _id 값은 빼고 보낸다는 뜻이다.
만약에 저 조건을 추가하지 않고 실행을 하면
{'_id': ObjectId('62089f9d6631734a76471285'), 'name': 'bob', 'age': 27}
{'_id': ObjectId('6208a347cdc799239dbe2aa4'), 'name': 'bob', 'age': 27}
{'_id': ObjectId('6208a348cdc799239dbe2aa5'), 'name': 'john', 'age': 20}
{'_id': ObjectId('6208a348cdc799239dbe2aa6'), 'name': 'ann', 'age': 20}
이렇게 나오는데 _id값을 빼고 보내면
{'name': 'bob', 'age': 27}
{'name': 'bob', 'age': 27}
{'name': 'john', 'age': 20}
{'name': 'ann', 'age': 20}
데이터의 정보만 출력되는 모습을 볼 수 있다.
단일 데이터 가져오기
하나의 데이터만 빼오고 싶으면
user = db.users.find_one({'name':'john'})
이렇게 find_one 이라는 문구를 사용한다.
user = db.users.find_one({'name':'john'})
print(user)
이렇게 실행을 하면
{'_id': ObjectId('6208a348cdc799239dbe2aa5'), 'name': 'john', 'age': 20}
하나의 값만 출력되는것을 볼 수 있다.
데이터 변경하기
데이터베이스에 있는 데이터의 내용을 변경하고 싶다면 update를 사용한다.
db.users.update_one({'name':'bobby'},{'$set':{'age':'19'}})
name 값이 bobby인 데이터의 age 값을 19로 수정을 한다.
데이터 삭제하기
데이터베이스에 있는 데이터의 내용을 지우고 싶다면 delete를 사용한다.
db.users.delete_one({'name':'bobby'})
name 값이 bobby 인 데이터를 삭제한다.
데이터가 사라졌다.
정리
from pymongo import MongoClient
import certifi
ca = certifi.where()
client = MongoClient('mongodb+srv://test:[email protected]/Cluster0?retryWrites=true&w=majority', tlsCAFile=ca )
db = client.dbsparta
# 저장 - 예시
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)
# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})
# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
all_users = list(db.users.find({},{'_id':False}))
# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
# 지우기 - 예시
db.users.delete_one({'name':'bobby'})
연습
from pymongo import MongoClient
import certifi
ca = certifi.where()
client = MongoClient('mongodb+srv://test:[email protected]/Cluster0?retryWrites=true&w=majority', tlsCAFile=ca )
db = client.dbsparta
# 저장 - 예시
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)
# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})
# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
all_users = list(db.users.find({},{'_id':False}))
# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
# 지우기 - 예시
db.users.delete_one({'name':'bobby'})
이전에 크롤링해서 출력해봤던 영화의 랭킹과 이름과 평점을 db에 넣어보는 코드를 구현했다.
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
import certifi
ca = certifi.where()
client = MongoClient('mongodb+srv://test:[email protected]/Cluster0?retryWrites=true&w=majority', tlsCAFile=ca )
db = client.dbsparta
#유저가 부른 것처럼 하기 위한 header 속성
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('https://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=pnt&date=20210829',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
# 코딩 시작
title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')
movies = soup.select('#old_content > table > tbody > tr')
#old_content > table > tbody > tr:nth-child(2) > td.point
for movie in movies:
a = movie.select_one('td.title > div > a')
img = movie.select_one("td:nth-child(1) > img")
point = movie.select_one("td.point")
if a is not None:
title = a.text
rank = img['alt']
star = point.text
doc = {
'title' : title,
'rank' : rank,
'star' : star
}
db.movies.insert_one(doc)
doc에 title과 rank와 star의 값은 이전에 크롤링해서 얻은 데이터로 지정하고, 반복문으로 수행하기 때문에 하나씩 추가해주는 구문을 작성한다.db.movies.insert_one(doc)
Author And Source
이 문제에 관하여(스파르타 웹개발 종합반 3주차 - pymongo로 DB 조작해보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jhs000123/스파르타-웹개발-종합반-3주차-pymongo로-DB-조작해보기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)