[이노베이션캠프] 웹개발 종합반 - 3주차(mongoDB)

Chaewon Yoon (Jamie)·2022년 7월 24일
0

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

DB개괄

들어가기 전에 - DB는 왜 쓰는 것일까?
    
    Q. 우리가 방 정리를 하는 이유는 무엇일까요?
  		👉 나중에 잘 찾기 위해서
    Q. 교보문고에 가서 책을 찾는 다고 하면?
  		👉꽂혀진 방법대로 찾아야 쉽게 찾을 수 있겠죠! 😎 (섹션 → 출판사 → 책 제목)
    	👉우리 눈에 보이진 않지만, 사실 DB에는 `Index` 라는 순서로 데이터들이 정렬되어 있답니다!

Database에는, 크게 두 가지 종류가 있습니다.

👉 **RDBMS(SQL)**
행/열의 생김새가 정해진 엑셀에 데이터를 저장하는 것과 유사합니다.
데이터 50만 개가 적재된 상태에서, 갑자기 중간에 열을 하나 더하기는 어려울 것입니다.
그러나, 정형화되어 있는 만큼, 데이터의 일관성이나 / 분석에 용이할 수 있습니다.
ex) MS-SQL, My-SQL 등
👉 **No-SQL**
딕셔너리 형태로 데이터를 저장해두는 DB입니다.
고로 데이터 하나 하나 마다 같은 값들을 가질 필요가 없게 됩니다. 
자유로운 형태의 데이터 적재에 유리한 대신, 일관성이 부족할 수 있습니다.
ex) MongoDB
👉  요새는 Cloud 형태로 제공해주는 곳들이 많답니다.
- 유저가 몰리거나 / DB를 백업해야 하거나 / 모니터링 하기가 아주 용이하기 때문이죠!
- 그래서, 우리도 최신 클라우드 서비스인 `mongoDB Atlas`를 사용해 볼 것이랍니다!
  • DB연결하기 & 데이터 넣기
    # 'users'라는 collection에 {'name':'bobby','age':21}를 넣습니다.
    db.users.insert_one({'name':'bobby','age':21})
    db.users.insert_one({'name':'kay','age':27})
    db.users.insert_one({'name':'john','age':30})
  • 모든 결과 값을 보기
    • pymongo(find)

       
      # 모든 데이터 뽑아보기
      all_users = list(db.users.find({},{'_id':False}))
      
      print(all_users[0])         # 0번째 결과값을 보기
      print(all_users[0]['name']) # 0번째 결과값의 'name'을 보기
      
      for user in all_users:      # 반복문을 돌며 모든 결과값을 보기
        print(user)
  • 특정 결과 값을 뽑아 보기
    • pymongo(find_one)
      user = db.users.find_one({'name':'bobby'})
  • 수정하기
    • pymongo(update_one)
      # 오타가 많으니 이 줄을 복사해서 씁시다!
      db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
      
  • 삭제하기 (거의 안 씀)
    • pymongo(delete_one)
      db.users.delete_one({'name':'bobby'})
      	
      
      
from pymongo import MongoClient
import certifi

ca = certifi.where()

client = MongoClient('mongodb+srv://test:sparta@cluster0.axdjt.mongodb.net/Cluster0?retryWrites=true&w=majority',
                     tlsCAFile=ca)
db = client.dbsparta

#영화 '가버나움'의 평점을 찾기
target_movie = db.movies.find_one({'title': '가버나움'})
target_star = target_movie['star']
print(target_star) #9.59

#'가버나움'과 같은 평점을 갖고 있는 영화 모두 찾기
movies = list(db.movies.find({'star': target_star})) 

for movie in movies:
    print(movie['title']) #그린 북 / 가버나움

# #영화 '법정'의 평점 0점으로 만들기
db.movies.update_one({'title': '법정'}, {'$set': {'star': '0'}}) #mongoDB에 '법정'의 평점 0으로 저장됨을 확인할 수 있음
profile
keep growing as a web developer!🧃

0개의 댓글