웹 개발 - 4

조재형·2023년 5월 22일
0

스터디

목록 보기
13/19

mongoDB

mongoDB 불러오기 명령어

from pymongo import MongoClient
client = MongoClient('여기에 URL 입력')
db = client.dbsparta
  1. 패키지 설치하기
  • 터미널에 dnspython 설치

    pip install dnspython

  • 터미널에 pymongo 설치

    pip install pymongo

  1. pymongo 홈페이지에서 가입 후 FREE DB 만들기

  2. DB를 만들고 위의 불러오기 명령어에 주소와 패스워드 입력

이제 python으로 실행시키면 mongoDB에 입력이 된다.

  • 위 코드에 이어서 + 실행과정
doc = {
	name : 영수,
    age : 24
    }
db.users.insertOne(doc)

입력 결과는 mongoDB에서 내 데이터베이스의 Collections에 가면

위 처럼 표시된다.

다른 새로운 내용을 추가하고 싶다면 위 코드를 여러번 사용한다.

  • pymongo(find)

    반대로 DB에 입력된걸 python으로 불러와 보고싶으면 위 명령어에 이어서
all_users = list(db.user.find({},{'_id':False}))

for a in all_users:
	print(a)

을 입력한다.

빈 중괄호 {} 안에는 조건을 입력하고 입력하지 않으면 모두 가져온다.

뒤에 '_id':False 를 지우면, id값이 붙어나온다.

때문에 안 보고싶다면 위처럼 입력한다.

  • pymongo(find_one)

    하나만 보고싶다면,
users = db.user.find_one({})
print(user)

을 입력하고 실행한다. id값을 지우라는 명령어를 적지 않았기때문에 id값도 같이 출력된다.

  • pymongo(update_one)

    db를 업데이트 하고 싶다면
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})

을 입력한다.

나는 영수의 나이를 변경해보고 싶어서

db.users.update_one({'name':'bobby'},{'$set':{'age':19}})

이렇게 입력했고 결과는

이렇게 바뀌었다.

  • pymongo(delete_one)

    delete_one은 내가 원하는 하나를 없애는 명령어이다.
db.users.delete_one({'name':'bobby'})

나는 영수를 없애보기 위해 bobby에 영수를 입력했고 결과를 확인할 수 있었다.

.
.
.
.
아래는
까먹었을때 보는 한번에 볼 수 있는 요약!

# 저장 - 예시
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
client = MongoClient('mongodb+srv://sparta:test@cluster0.x0xikyx.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta

import requests
from bs4 import BeautifulSoup

URL = "https://movie.daum.net/ranking/reservation"
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(URL,headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')

video_list = soup.select("#mainContent > div > div.box_ranking > ol > li")
for v in video_list:
  # print(v)
  rank = v.select_one(".rank_num").text
  title = v.select_one(".tit_item").text.strip("\n")
  rate = v.select_one(".txt_grade").text
  doc = {
    'title':title,
    'rank':rank,
    'rate':rate
  }
  db.movies.insert_one(doc)

과거에 했던 코드에 위 3줄을 붙여주고
doc으로 넣어주고, movies 라는 db를 새로 만들어주면 결과는

좌측에 movies라는 탭이 새로 생성되면서 스크래핑 자료가 업로드 되었다!

연습문제

#1번 퀴즈 특정 영화의 평점 가져오기

from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@cluster0.x0xikyx.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta

moive = db.movies.find_one({'title':'롱디'})
print(moive['rate'])

결과

# 2번 퀴즈 특정 영화의 평점고 같은 평점의 영화 제목 가져오기

from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@cluster0.x0xikyx.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta

movie = db.movies.find_one({'title':'롱디'})
target_rate = movie['rate']

movies = list(db.movies.find({'rate':target_rate},{'_id':False}))
for a in movies:
    print(a['title'])
    

결과

# 3번퀴즈 '롱디' 영화의 평점을 0으로 만들기

from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@cluster0.x0xikyx.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta

db.movies.update_one({'title' : '롱디'},{'$set':{'rate':0}})

결과

profile
안녕하세요.

0개의 댓글