mongoDB

tycode·2021년 5월 2일
0

웹개발 종합

목록 보기
8/9

DB설치 확인

먼저, 설치된 DB가 잘 작동하는지 확인. 크롬 창에 localhost:27017 쳤을 대 아래와 같이 나오면 mongoDB가 돌아가고 있다는 것.

  • robo 3T의 역할

mongoDB라는 프로그램은 눈으로 볼 수 없다. 그래픽 인터페이스(GUI)를 제공하지 않기 때문이다.

데이터를 저장했는데 눈으로 보기 위해선 DB내부를 살펴보기 위한 프로그램을 따로 설치한다.
그것이 바로 robo3T

  • robo3T 세팅하기
  1. Create누르고
  2. Name은 아무 이름 입력해도 됨.
  • db, collection, documents(각 데이터들을 지칭)를 확인 가능하다

지금은 System, config 외엔 아무것도 없다.
데이터를 넣으면 아래처럼 보이게 됨.

DB개괄

데이터베이스는 데이터를 잘 갔다 쓰려고 사용하는 것이다

Database에는 크게 두 가지 종류가 있음

RDBMS(SQL)

엑셀에 좀 가깝다
예로 연락처 만들 때, '이름', '번호' 등으로 카테고리로 나뉘어서 저장되고, 데이터가 없으면 공란으로 두고 써내려간다.

  • 예로)

SQL
:만명의 회원 정보를 가지고 있었는데 다음 회원부턴 집주소를 넣는다고 가정한다면, 10001번째부터 집주소있고 그 위로는 공란이게 됨. 불편할 수도 있지만 정형화된 데이터를 뽑기에는 최적화가 되어 있어 편하다.

반면 No-SQL
:그런거 신경쓸 필요가 없어서 초기 스타트업 또는 초기 서비스에서 많이 채택되는 이유다.

No-SQL

카테고리 없이 데이터가 저장됨

pymongo로 DB조작하기

  • pymongo 패키지 설치

  • pymongo 라이브러리의 역할

  • pymongo 기본 코드


insert / find / update / delete 를 알아두자!

  • DB연결하기 & 데이터 넣기

    pymongo(insert)

  • 모든 결과 값을 보기

    pymongo(find)

나이가 같은 사람을 찾아라
id:False는 뒤에 나오는 id값을 안 보이게 하는 코드

리스트 형태로 여러개 가져올 때, find 앞 값을 빈칸으로 두자

  • 특정 결과 값을 뽑아 보기

    pymongo(find_one)

  • 수정하기

    pymongo(update_one)

name이 bob을 찾아서 age를 19로 바꿔라

  • 삭제하기

    pymongo(delete_one)

요약


웹스크래핑 결과 저장하기

  • insert 연습하기 - 웹스크래핑 결과를 DB에 저장히기
  1. 시작

  2. 기본 세팅

  3. 도큐먼트(doc) 만들어서 하나씩 insert 하기

연습

이렇게 만들기

  • (1) 영화제목 '매트릭스'의 평점을 가져오기

정담:

  • (2) '매트릭스'의 평점과 같은 평점의 영화 제목들을 가져오기

정담:

  • (3) 매트릭스 영화의 평점을 0으로 만들기

다른 애들이 다 문자열이기 때문에
숫자대신 문자열로: 0대신 '0'을 쓰는 이유
(숫자로 찾으면 문자열로 된 애들 안나오기 때문이기도 하다)

정답:

(4) 지니뮤직 1~50위
순위 / 곡 제목 / 가수를 스크래핑 하기

https://www.genie.co.kr/chart/top200?ditc=D&ymd=20200403&hh=23&rtm=N&pg=1

정답:

import requests
from bs4 import BeautifulSoup

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://www.genie.co.kr/chart/top200?ditc=D&ymd=20200403&hh=23&rtm=N&pg=1',headers=headers)

soup = BeautifulSoup(data.text, 'html.parser')

trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')

for tr in trs:
    title = tr.select_one('td.info > a.title.ellipsis').text.strip()
    rank = tr.select_one('td.number').text[0:2].strip()
    artist = tr.select_one('td.info > a.artist.ellipsis').text
    print(rank, title, artist)

힌트: 문자열 자르기
rank의 공백 지우기 위해 쓴 코드

0개의 댓글

관련 채용 정보