본문 바로가기

[부트캠프] IT 코딩 부트캠프 후기/[Let's TIL😶‍🌫️] FastCampus

[Let's TIL✍️] 코딩 18 : 3 Week _ 서버 만들기

 

01. 몽고 DB 이해하기

우리가 데이터베이스를 쓰는 이유는?

: 블로그나 사이트에서 글을 쓰거나 해서 데이터를 만들었을 때,

우리가 다시 웹사이트에서 보려면 저장이 되어있어야 한다.

 

그래서 그 저장의 용도가 바로 데이터베이스이다.

: 또한 우리가 앞으로 만들 백엔드 프로그램이라는 어떤 '코드'를 활용해서

데이터베이스에 넣었다가 뺐다가, 수정도 했다가 하면서 데이터를 '조작'할 것이다.

그렇다면 이 '데이터'는 어떻게 생겼으며 어떻게 저장해야하고, 어떻게 사용해야하는지를 살펴볼 것이다.


 

1) mongoDB 검색 후 사이트 접속하기

2) 소개를 보면 DB 라고 나와있고, 어려운 용어들이 나온다.  (이 부분은 Pass)

3) 리소스의 가이드 시작 (가이드 문서) 살펴보기

: data를 table 형태로 표현할 수 있다.

(= 어떤 순서나 칼럼에 맞는 data를 모으게 된다. ex 엑셀)

이렇게 table 형태로 저장하면 많은 장점이 있다.

but 단점도 있다. 

: SQL이 필요하다는 것이다. (=우리가 접근할 방법을 새로 배워야 한다는 것이다)

한 마디로, table 형태로 제공하는 데이터베이스를 사용하려면 필연적으로 필요한 것이 SQL 이다.
(L= 랭귀지, 즉 언어)

 

그러나 언어를 배우는 것은 어려운 일이므로, 이 수업에서는 몽고 DB를 사용한다.

 MongoDB는 기본적으로 Document를 저장하는 데이터베이스라고 표현한다.
"document"라는 어떤 큰 틀만 있고 그 안에서 자유형식이 있다. (레포트, 이력서를 모두 문서라 통칭하는 것처럼)

 

그럼 이를 어떻게 표현하나?

: 바로 JSON 방식을 사용한다.

(= 파이썬의 딕셔너리, API가 전달해주는 결과값과 형태가 같다.)

 

json 방식

 

 즉, MongoDB는 우리가 알고있는 JSON 형태의 데이터를 그대로 저장하고, 가져올 수 있다는 것이다.

그러므로 우리가 몽고DB를 사용한다면 SQL을 배우지 않아도 된다. 이미 파이썬 등에서 사용해본 형식이므로.

몽고DB를 파이썬을 이용해서 접근 or 몽고DB가 제공해주는 프로그램을 이용해서 데이터를 생성, 변경할 예정


02. 몽고 DB 설치하기

1) 몽고 DB홈페이지 접속

(주소는 kr 아니고 그냥 .com으로 접속하기)

2) product > community eddition 접속하기

 

우리가 이용할 것은

on-premises 방식의 MongoDB Community server이다. (= 몽고DB에서 무료 버전)

 

3) 환경에 따라 오른쪽에서 플랫폼 선택.

: 윈도우면 윈도우, 맥이면 맥

4) version 고르기 - 4.4.13

(근데 없어서  4.4.15 을 골랐다. 이 때 앞의 두 숫자만 같으면 된다고 한다.)

 

5) 실행해서 설치하기

complete로 설치 완료! 

 

6) 다 된줄 알았는데 ... 

 

7) 껐다 켜졌는데, 안돼서 해결방법 참고

: 4.4.15 몽고DB를 다운 받는 경우,  compass가 정상적으로 실행되지 않아서

https://www.mongodb.com/try/download/compass 에서 1.32.5를 설치 후 실행하니 제대로 작동

8) 업데이트 등에 대한 체크 박스가 나오는데 다 비활성화 해도 되고 안해도 된다. 

우선 이 프로그램은 몽고DB에 접속할 때 사용하는 프로그램이며, 어딘가에서 자동으로 몽고 DB가 실행중이다. 

9) 몽고 DB와 localhost 

mongodb://localhost:27017

앞의 mongodb는 몽고DB주소라는 것이고 localhost는 컴퓨터를 의미한다. 
뒤의 번호는 몽고DB가 사용하는 번호이다. 
(=이 컴퓨터에 설치되어서 실행 중인 몽고DB에 접속하겠다는 의미)

 

10) connect를 눌러서 연결하기

11) 구경하기 

왼쪽의 데이터들 중 local을 누르면, 이미 만들어진 collection을 볼 수 있다. 

이를 통해서 구경을 해 볼 것이다.

 

​TIP🤖 collection 이란?

먼저, 몽고 DB에서는 DB, Collection, Document 단위로 데이터를 관리한다.

이때 몽고DB의 data는 JSON 형태이므로, 펼쳐서 볼 수 있다. 

이때 컬렉션이란, (문서들이 모인) 하나의 단위를 의미한다.
= 비슷한 유형의 data를 모아놓는 하나의 집합

ex. 영화 컬렉션 : 영화명 & 감독 명이 주르륵 들어있는 문서들(documents)
(data)local - 컬렉션

따라서 우리가 Yes24라는 하나의 컬렉션을 만들어서 책 data들을 넣게 될 것이다.

컬렉션을 누르면, 안의 data들이 보인다.

03. 몽고 DB 조작하기

python을 이용해서 MongoDB에 접속하고, data를 넣고 조회하는 코드 만들기

1) 패키지 설치

cmd 터미널 열고, pip install pymongo

이렇게 패키지를 설치하면 레퍼런스 문서가 있다. (가이드 문서)

(레퍼런스 문서) pymongo Tutorial을 살펴보자. 

​TIP🤖 코드 - 데이터베이스 접근 순서

일반적으로 코드에서 데이터베이스에 접근할 때에는 Making a Connection (커넥션을 만든다 _ 주소 써서 접속)

1_ 이렇게 연결을 만들고 Database를 선택

2_ 그 안에서 Collection 선택

3_ 그 안에서 문서를 넣거나, 가지고 오게 되는 순서이다.

 

 

 

3) vscode에 mongo.py 라는 파일 만들기

 

4) 외부 패키지 가져오기 

외부에서 설치한 패키지를 가져올 때는 import 혹은 from import 사용하기

from pymongo.mongo_client import MongoClient

근데 여기서 오류가 생겼다. (빠른 수정을 사용할 수 없음)

: mongoDB라는 데이터베이스를 조작하려면 특별한 라이브러리인 pymongo라는 라이브러리가 필요하다.

기본 파이썬 라이브러리가 아니기 때문에 따로 설치를 하거나
pycharm professional을 사용하고 있으면 아래 링크를 참고하여 pymongo, dnspython를 설치하자.

참고 https://duckgugong.tistory.com/m/159

 

but ! dnspython를 설치해도 안되었다. 

혹시 pip 업그레이드 오류 때문인가 싶어서 오류 해결법을 찾아보았다. 

python -m pip install --upgrade pip

이를 복사해서 넣으면 pip 업그레이드 끝!

 

네 가지 방법 중에서 하나라도 설치가 되면 해결

(1) 일반적으로 아래 명령어를 입력하면 해결 가능하다.

python -m pip install --upgrade pip

(2) 파이썬 버전 2와 3이 설치된 경우. 파이썬 버전 3을 이용하기 위해서는 py 명령어를 입력해야한다.

py -m pip install --upgrade pip

(3) 명령어 (1)과 같은 형태가 리눅스 명령어라고 한다. 윈도우 환경일 경우 아래처럼 입력하면 해결 될 수도 있다.

pip install --upgrade pip

(4) sudo를 앞에 넣어보자. 권한이 없어 실행이 안 될 수도 있다.

sudo pip install --upgrade pip


출처: https://loveplz.tistory.com/301 [SHARE ALL FREE:티스토리]




VScode에서는 reportMissingImport

문제라고 떴고, 이걸 토대로 구글링

 

1. Ctrl + Shift + P 입력 (Palette 명령어)

2. Python Interpreter를 입력

3. Python : 인터프리터 선택 클릭

4. 하단의 64-bit 글로벌 클릭 (=인터프리터 선택)

하면 밑줄 오류가 해결된다 :)

 

첫번째 나온 인터프리터 눌러주기

 

밑에 글로벌 눌러주기



5) 몽고 DB 접속하기 
client = MongoClient('mongodb://localhost:27017/') 코드를 복사 붙여넣기

 

​몽고DB에 접속했으니, 그 다음은 database를 선택하는 과정이 필요함

6) 우리는 local을 사용할 것이므로, db = client.local 이렇게 작성한다.

이제 database 선택 끝! 

이제 우리가 선택할 collection이 있어야 함

 

7) 문서를 가져오기 (find_one 함수 이용)


collection.find_one() 그러면 하나의 문서가 가져와진다.

8) 출력 해보기

row = collection.find_one()

print(row)

 

몽고DB에선 JSON 방식이라 보기 좋았는데, 터미널에서 출력을 해보니깐 줄줄 다 나와버린다.

 만약 find 함수를 쓰면 어떻게 될까?
= 모두 찾겠다는 의미, 그리고 반복문을 사용 (for문)

9) 이제 컬렉션을 만들어서, data를 넣어보기 (MongoDB의 compass실행, 컬렉션 추가 )

1_ 몽고 db로 가서 local (data) 선택

2_ create collection 만들기 (이름 지정)

3_ 코드로 돌아와서, collection 이용해서 data를 넣었다 빼볼 예정

4_ client = MongoClient('mongodb://localhost:27017/')

db = client.local

collection = db.fastcampus

5_ 지금은 data가 안에 없으므로, 출력해도 나오지 않음

6_ data 넣기 (Inserting a Document) : insert_one 함수 사용

collection.insert_one({ })

7_ 들어갈 data : 딕셔너리 (JSON data)를 넣어주는 형태이기 때문에,
JSON 형태로 바로 변경할 수 있는 딕셔너리 형태가 가능하다.

8_ 임의의 데이터 넣기

: collection.insert_one({

"title": "FastCampus Course!",

"content" : "3 Week Course"})

 

= 타이틀과 내용의 두 개의 data (두 개의 키를 가진)
하나의 딕셔너리 변수를 만들어 넣은 것이다. 

9_ 출력 (재생 버튼) 해보니, 잘 나온다

10_ 몽고 DB에서도 확인 가능하다 (data가 삽입되었다.)

10) 이제 조건(필터)을 걸고 data 가져오기 (Querying)

{"_id": post_id} 값을 조건으로 걸고있는데, 우리는 title 이용

row = collection.find_one({'title' : "FastCampus Course!"})

= 이는 'title' : "FastCampus Course!" 인 값을 찾겠다는 뜻이다.

11) print(row) 로 출력해보기

값이 여러 개 나오는 이유는?
우리가 프로그램을 실행하면서, 반복적으로 들어갔으므로 계속해서 나온 것이다.

최종 정리

몽고 DB라는 프로그램에서 파이썬 코드를 이용해서 직접 커넥션을 만들고,
data를 넣고 조회하는 방법을 배웠다.


04. 웹 스크래핑(크롤링) 결과 출력하기

: 앞에서 해본 yes24 베스트셀러 코드 + 몽고 DB 연결



1) mongoDB라는 데이터베이스를 조작할 때에는
특별한 라이브러리인 pymongo라는 라이브러리가 필요하므로, 라이브러리를 가져오자.


from pymongo.mongo_client import MongoClient

이제 그아래에는 MongoClient 작성할 것이다.

2) 웹의 data를 가져오기 전에, connection 부터 만들기

client = MongoClient('mongodb://localhost:27017/')

3) DB 선택 (local 그대로 사용)

db = client.local



4) collection 만들기


새로운 컬렉션을 만들 때는 어떻게 할까?

-컬렉션이 이미 있는 것처럼, 키로 접근하여 사용하면 자동으로 생성된다.



5) 우선 맨밑의 print는 지우고, 코드를 작성

db['yes24'].insert_one({

'Title' : ts.text})

원래는 collection~ 하고 만들어야하는데, 없는 컬렉션을 만들어주므로

db에서 쭉 수집하면서 추가되어 컬렉션이 자동으로 생성될 수 있게 한 것이다.


6) Mongo DB에 가서 확인하면 (왼쪽 새로고침) yes24 컬렉션이 새로 만들어짐

우리가 작성한 코드, 그리고 그 data들은 이렇게 DB에 저장되어서 관리 되어야 한다.

이는 매번 스크래핑을 할 수 없기 때문이다. (시스템 부하 등)

 

 

7) 전체를 주석처리하기 + data 조회만 해보기


TIP🤖 주석처리 

전체를 누른 다음에, ctrl + / 를 누르면 주석처리 된다.

맥의 경우 command + /




8) db 밑에 출력 추가하기

collection = db.yes24

rows = collection.find()

for row in rows :

print(row)

만들어서 출력하면 실습 끝!

화목A반 스터디


1) 터미널 내리기

터미널 내리는 방법 몰랐다가 찾아서 행-복

레이아웃 설정에서 패널 위치를 조정하고, 오른쪽에 있는 터미널을 아래로 잡아내리기! 

 

2) Selenium VS BeautifulSoup 라이브러리 비교

 



3) 패키지 위치 찾는 법

pip list 는 - package랑 버전만 보인다.

 

단축키_ pip3 show + 찾고싶은 package 입력 : 패키지의 위치 찾기 가능

4) VSCode 에서 Github에 업로드 하는 방법

https://webnautes.tistory.com/1422


오늘의 소감 ✍️

이번 주는 내일과 내일모레 일정을 위해서 진짜 달렸다..

오늘 마감을 맞추기 위해서 진짜 열심히 + 최대한 시간을 쏟아서 완성해서


더 뿌듯하고, 추가과제가 앞에 보이긴 하는데 우선 다녀와서 할 생각이다.

스터디와 조교님의 도움으로 여러 부분을 해결해서 더 홀가분하다!

천천히 꾸준하게

앞을 향해 나아가자 !