얼음꽃의 일지

DB 설명 및 사용 본문

웹개발 개발일지/3주차

DB 설명 및 사용

얼음꽃 2022. 9. 1. 13:04
728x90

DB에 대해서 알아보겠습니다. DB를 왜 쓰냐?

 

정리가 안된 장소에서 정리를 하고, 나중에 물건을 잘 찾으면 편리하죠? 그거처럼 DB도 들어오는 데이터를 잘 정리해서 나중에 찾기 쉽게 하려고 사용합니다. 서점, 마트 같은 느낌이라고 보시면 되겠네요.

 

DB에는 두가지 종류가 있는데요.

두 종류 DB ( 출처 : 스파르타코딩클럽 )

두개의 설명을 하자면

 

SQL은 생김새가 우리가 하는 행렬 처럼 되어있어서 데이터를 저장하는 것입니다. 그대신 엄청나게 데이터가 쌓여있는 상태에서 중간에 갑자기 열을 추가하는건 살짝 어렵습니다. 즉, 일관성, 분석 등에는 좋지만 너무 많은 양의 데이터에서 추가하기는 조금 힘들다 라고 생각하시면 될거 같습니다. ex ) MS - SQL, My - SQL  등

 

No-SQL은 NO SQL이 아니라 Not only SQL 이라는 의미인데요 행렬이 아닌 딕셔너리 형태로 데이터를 저장해 둡니다. 그렇기 때문에 데이터 하나 하나 마다 같은 값들을 가질 필요가 없고, 데이터를 자유롭게 적재가 가능하지만 일관성이 부족할 수 있습니다. ex ) MongoDB

 

제가 사용할 프로그램은 클라우드 형태인 MongoDB Atlas를 사용할 예정입니다.

 

( MongDB Atlas 설치 가입 및 설치 방법 관해서는 유튜브, 블로그, 구글링을 추천드립니다. )

 

MongDB를 python에서 사용하기 위해서는 그에 맞는 패키지가 필요한데요. 다음 패키지를 설치해 줍니다.

 

  • pymongo : 파일 - 설정 - 프로젝트 - Python 인터프리터 - 더하기 버튼 클릭 - pymongo (pymongo 뒤에 붙은것들 X)
  • dnspython : 파일 - 설정 - 프로젝트 - Python 인터프리터 - 더하기 버튼 클릭 - dnspython (마찬가지 뒤에 붙은 것 X)

설치를 한 후에 MongoDB에서 Connect your application을하게 되면 

 

Connect 관련

빨간 상자처럼 해주시고, 주소를 복사해서 py로 가져올겁니다.

 

MongoDB 기본 코드

from pymongo import MongoClient
client = MongoClient('여기에 URL 입력')
db = client.dbsparta

위의 코드를 붙여 넣어줍니다. 저 같은 경우 스파르타코딩클럽에서 강의를 보고 사용했기때문에 dbsparta를 사용합니다.

 

그리고 아까 복사해둔 URL을 client = MongoClient 안에 넣어줍니다.

 

이때 주소를 보시면 <password> 부분에 usernamer과 password를 만들면서 넣으신 비밀번호를 넣어주시고 myFirstDatabase에는 database만들어진 이름을 넣어주시면 됩니다. (여기서는 Cluster0 이네요.)

 

현재 말씀드린 내용은 위의 사진에서 주소 밑에 영어로도 적혀있으니 참고바랍니다.

 

이제 연결을 시켰으니 잘 되는지 한번 확인 해보겠습니다. 다음 코드를 넣어줄 예정입니다.

 

DB되는지 확인하기 위해 넣은 코드

MongoDB는 딕서녀리 형태이기 때문에 딕서녀리 형태로 만들어서 이름과 나이를 넣었고 

 

db.users.insert_one(doc) 이라는 부분은 처음 보실수 있는데 풀어서 말씀드리면

 

db에 users라는 곳에 doc값을 넣자 라는 뜻입니다. 이 코드 관련해서 마지막에 정리 해놓을 예정입니다.

 

이제 잘 들어갔는지 MongoDB - Database - Collections로 가서 확인해보겠습니다.

 

잘 들어왔는지 확인

잘 들어와있는것을 확인하실수 있습니다.

 

이제 pymongo를 이용해서 DB를 조작할 수 있는 코드를 정리해서 올려드리겠습니다.

pymongo에 쓰이는 간단한 코드

위에 나온 코드 이외에도 추가적인 코드는 존재할 수 있습니다. 더 필요한 코드가 있으면 구글링을 추천해드립니다.

 

간단히 설명을 드리면 처음에 딕셔너리 형태로 값을 집어넣고

1. 그 값을 찾겠다 하면 find

2. 하나만 찾겠다 하면 find_one

3. 여러개를 다 불러오겠다하면 list

4. 바꾸겠다 하면 update

5. 하나를 삭제하겠다 하면 delete_one ( 다 삭제는 delete 쓰시면 됩니다. )

 

이제 이 내용을 가지고 네이버 랭킹 페이지를 단순히 py파일에 결과 출력이 아닌 MongoDB에 넣어보도록 하겠습니다.

 

이전 게시물에서 사용한 코드에서 추가만 하는거라 크게 변하는 부분은 없습니다.

 

 

이전 코드

이제 이 이전 코드에 MongoDB를 섞어서 넣어보겠습니다.

 

이전 코드 + MongoDB 코드

크게 변한 부분은 영화값들을 받아와서 그걸 그대로 db에 넣어준 부분 뿐입니다. 결과를 보여드리면

 

위의 코드 결과

잘 들어간걸 확인할 수 있습니다.

 

 

728x90