스파르타코딩클럽/웹개발

웹개발종합반 개발일지 | 3주차 - 12,13,14강 Python으로 mongoDB 조작하기

이모냥냥 2022. 8. 27. 23:45
반응형

💡수업 목표💡
  1. 파이썬 기초 문법을 안다.
  2. 원하는 페이지를 크롤링 할 수 있다.
  3. pymongo를 통해 mongoDB를 제어할 수 있다.

 

 

2022.08.26 - [스파르타코딩클럽/웹개발종합반] - 웹개발종합반 개발일지 | 3주차 - 1강 파이썬 설치 및 Pycharm 설정

 

웹개발종합반 개발일지 | 3주차 - 1강 파이썬 설치 및 Pycharm 설정

💡수업 목표💡 파이썬 기초 문법을 안다. 원하는 페이지를 크롤링 할 수 있다. pymongo를 통해 mongoDB를 제어할 수 있다. 공식 홈페이지에서 Python 설치 웹개발종합반 강의에서는 해당 설치방법을

sosohan-coding.tistory.com

2022.08.26 - [스파르타코딩클럽/웹개발종합반] - 웹개발종합반 개발일지 | 3주차 - 2강

 

웹개발종합반 개발일지 | 3주차 - 2강

💡수업 목표💡 파이썬 기초 문법을 안다. 원하는 페이지를 크롤링 할 수 있다. pymongo를 통해 mongoDB를 제어할 수 있다. 2022.08.26 - [스파르타코딩클럽/웹개발종합반] - 웹개발종합반 개발일지 | 3주

sosohan-coding.tistory.com

2022.08.26 - [스파르타코딩클럽/웹개발종합반] - 웹개발종합반 개발일지 | 3주차 - 3,4,5,6,7,8강

 

웹개발종합반 개발일지 | 3주차 - 3,4,5,6,7,8강

💡수업 목표💡 파이썬 기초 문법을 안다. 원하는 페이지를 크롤링 할 수 있다. pymongo를 통해 mongoDB를 제어할 수 있다. 2022.08.26 - [스파르타코딩클럽/웹개발종합반] - 웹개발종합반 개발일지 | 3주

sosohan-coding.tistory.com

2022.08.27 - [스파르타코딩클럽/웹개발종합반] - 웹개발종합반 개발일지 | 3주차 - 9,10,11강 mongoDB Atlas로 시작하기

 

웹개발종합반 개발일지 | 3주차 - 9,10,11강 mongoDB Atlas로 시작하기

💡수업 목표💡 파이썬 기초 문법을 안다. 원하는 페이지를 크롤링 할 수 있다. pymongo를 통해 mongoDB를 제어할 수 있다. 2022.08.26 - [스파르타코딩클럽/웹개발종합반] - 웹개발종합반 개발일지 | 3주

sosohan-coding.tistory.com

 


 

Python으로 mongoDB 조작하기

python으로 mongoDB를 사용하려면 특별한 라이브러리가 필요하다.

  • pymongo : noSQL인 mongoDB를 다루기 위한 파이썬 라이브러리.
  • dnspython : Python용 DNS 툴킷. 쿼리, 영역 전송, 동적 업데이트, 네임서버 테스트 및 기타 여러 작업에 사용.

Preferences > Project : pythonPrac > Python Interpereter에서 해당 라이브러리를 설치해준다.

 

pymongo로 mongoDB연결하기

from pymongo import MongoClient
client = MongoClient('여기에 URL 입력')
db = client.dbsparta

 

별다른 오류 없이 성공했다면 성공적으로  DB에 올라간 것이다.
mongoDB 서버를 확인해보면 내가 입력한 데이터들이 제대로 올라간것을 확인 할수 있다.

 

pymongo로 데이터 추가/조회/수정/삭제 다루기

DB 데이터 추가

doc = {
    'name' : 'bob',
    'age' : 27
}
db.users.insert_one(doc)
db.users.insert_one({'name':'bobby','age':21})
db.users.insert_one({'name':'kay','age':27})
db.users.insert_one({'name':'john','age':30})

 

DB 데이터 조회

# 모든 데이터 뽑아보기
all_users = list(db.users.find({},{'_id':False}))
for user in all_users:
    print(user)

db.find()

#딱 하나 결과값
user = db.users.find_one({'name':'bobby'})
print(user['age'])

db.find_one()

 

DB 데이터 수정

# 특정 데이터 수정하기
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})

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

 

DB 데이터 삭제

# 특정 데이터 삭제하기
db.users.delete_one({'name':'bobby'})

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

 

Quiz. 영화 랭킹 웹스크랩핑 결과 이용하기

Q1. 웹스크랩핑 결과 저장하기

import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
client = MongoClient('-----URL-----')
db = client.dbsparta


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")
for movie in movies:
    a = movie.select_one("td.title > div > a")
    if a is not None :
        title = a.text
        rank = movie.select_one("td:nth-child(1) > img")["alt"]
        star = movie.select_one("td.point").text
        print(rank, title, star)
        doc = {
            'title': title,
            'rank': rank,
            'star': star
        }
        db.movies.insert_one(doc)

 


Q2. 영화제목 '가버나움'의 평점을 가져오기

movie = db.movies.find_one({'title':'가버나움'})
print(movie['star'])

 

 

Q3. '가버나움'의 평점과 같은 평점의 영화 제목들을 가져오기

movie = db.movies.find_one({'title':'가버나움'})
q_star = movie['star']

find_movies = db.movies.find({'star' : q_star});
for find_movie in find_movies:
    print(find_movie['title'])

 

 

Q4. '가버나움' 영화의 평점을 0으로 만들기

movie = db.movies.find_one({'title':'가버나움'})
q_star = movie['star']

db.movies.update_one({'title':'가버나움'},{'$set':{'star':"0"}})
movie = db.movies.find_one({'title':'가버나움'})
print(movie)

 

반응형