mongoDB

hihyeon_cho·2022년 10월 24일
1

sparta-web

목록 보기
6/8

DB(Database)


SQL vs No-SQL

SQL

행/열의 생김새가 정해진 엑셀에 데이터를 저장. 정형화 되어 있어, 중간에 데이터를 변형하는 것이 어려울 수 있음. 데이터의 일관성이나 분석에 용이
ex ) My-SQL, MS-SQL 등

No-SQL(Not only SQL)

Dictionary형태로 데이터를 저장. 자유로운 형태의 데이터 적재 가능, 일관성이 부족할 수 있음.
ex ) mongoDB


Pymongo

Python으로 mongoDB를 사용하기 위한 라이브러리

( pycharm에서 다운로드함 )
pycharm실행 > 설정 > 프로젝트 > python 인터프리터 > + > 'pymongo' 검색 > 패키지 다운로드 >'dnspython'검색 > 패키지 다운로드

pymongo 기본 코드

from pymongo import MongoClient
client = MongoClient('mongoDBURL 입력')
db = client.dbsparta

mongodDB URL ?
Database Deployments > connect > mongoDB Drivers > Add your connection string into your application code 밑에 있는 코드복사 > password 부분을 데이터베이스 생성할 때 설정했던 password로 변경


pymongo 써보기

  1. DB 연결하기 및 데이터 넣기
    ex) 'users'라는 collection에
    {'name' : 'kim' , 'age' : 24 } 넣기
    doc = {
           'name':'kim',
           'age':24
      		 }
    db.users.insert_one(doc)
    or
db.users.insert_one({'name':'kim','age':24})
  1. DB의 모든 결과 값을 보기
#users의 모든 데이터 보기
all_users = list(db.users.find({},{'_id':False}))
#0번째 결과값을 보기
print(all_users[0])
# 0번째 결과값의 'name'을 보기
print(all_users[0]['name']) 
# 반복문을 돌며 모든 결과값을 보기
for user in all_users:      
    print(user)
  1. 특정 결과 값을 보기
    ex ) name이 kim인 user를 print
user = db.users.find_one({'name':'kim'})
print(user)
  1. 수정하기
    ex ) 'users' collection에서 'name'이 'kim'인 사람의 나이를 19로 수정하기
db.users.update_one({'name':'kim'},{'$set':{'age':19}})
# user값 print해서 수정됐는지 확인 !
user = db.users.find_one({'name':'bobby'})
print(user)
  1. 삭제하기 ( 사용 잘 안함 )
    ex ) 'users' collection에서 'name'이 'kim'인 사람의 데이터 삭제하기
db.users.delete_one({'name':'bobby'})
# user값 print해서 삭제됐는지 확인 !
user = db.users.find_one({'name':'bobby'})
print(user)

pymongo 기본셋팅

import requests
from bs4 import BeautifulSoup

##pymongo 여기##
from pymongo import MongoClient
client = MongoClient('mongodb+srv://test:<password>a@cluster0.55vah.mongodb.net/Cluster0?retryWrites=true&w=majority')
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')

genie뮤직 크롤링숙제 리뷰
genie뮤직 순위페이지를 크롤링하여 '순위/곡제목/가수'스크래핑하기

  • DB가 아직 익숙하지 않아서 평소보다 어려움을 많이 느꼈었다. 하지만, 힌트를 참고하면 금방 해결되는 문제였다.
    1) .text[0:2]
    :   .text는 텍스트만 나타내는 것이지만 이렇게 [ ]안에 범위를 나타내면, 범위 안의 글자만 나타낼 수 있다.
    2) .strip()
    :   .strip()은 양쪽에 있는 공백 및 문자를 없애주는 Python 문자열함수이다.
 ex) title = tr.select_one('td.info > a').text.strip()

양쪽 뿐만 아니라, 오른쪽에 있는 공백 및 문자를 없애주는 .rstrip()과 왼쪽에 있는 공백 및 문자를 없애주는 .lstrip()도 있다.
이 3가지 함수를 사용하여 문자를 없애고 싶을 때에는 괄호 안에 없애고 싶은 문자를 입력하면 된다.
ex ) 'ooomongodbooo'의 'o'를 없애고 싶을 때

.text.rstrip('o') #오른쪽에 있는'o'=>'ooomongodb'
.text.lstrip('o') #왼쪽에 있는'o'=>'mongodbooo'
.text.strip('o')  #양쪽에 있는'o'=>'mongodb
profile
코딩은 짜릿해 늘 새로워 ✨

0개의 댓글