[항해99] 스파르타 코딩클럽 3주차 -2

🌈 m1naworld ·2022년 10월 9일

항해99

목록 보기
4/7
post-thumbnail

[웹개발 종합반] 3주차 강의

🎯 수업 목표

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

🎯 목차

...

  1. DB개괄
  2. mongoDB 시작하기
  3. mongoDB 연결하기
  4. pymongo로 DB 조작하기
  5. 웹스크래핑 결과 저장하기
  6. Quiz_웹스크래핑 결과 이용하기
  7. 3주차 끝 & 숙제 설명

1. mongoDB란

- NO-SQL

Not Only SQL, SQL이 아니다라는 의미만을 지니며 SQL을 사용하는 관계형 데이터베이스가 아닌 데이터베이스를 의미한다. 대표적인 NO-SQL로 mongoDB, Redis 등이 있다.

- Document

mongoDB는 Documenet 기반 데이터베이스이다. Database > Collection > Document > Field 계층으로 이루어져 있으며 Documenet는 RDBMS의 Row에 해당한다. 계층은 RDBMS와 유사하다.



2. mongoDB 연결하기

1) mongoDB Atlas 가입 및 Cluster 생성

mongoDB Atlas란, mongoDB를 설계한 사람들이 만든 모든 것을 관리하는 클라우드 데이터베이스 클라우드 데이터베이스


2) mongoDB-Atlas 연결하기

- 라이브러리 설치

pip install pymongo
pip install dnspython

- DB 연결

from pymongo import MongoClient

client = MongoClient('여기에 URL 입력')
db = client.[Database이름]

- .env활용하여 DB 연결하기

나는 github에 코드파일을 올리기 때문에 .env파일을 통해 환경 변수를 관리하고자 하였다.

  • 라이브러리설치
	pip install python-dotenv
  • .env파일
	DB_ID=
    DB_PASSWORD=
    DB_NAME=
  • .env파일의 환경변수 불러오기
  	load_dotenv()
  	os.environ['변수명']
  	os.getenv('변수명')
  • DB 연결 파일 예시
	from dotenv import load_dotenv
    import os
    from pymongo import MongoClient
    import certifi

    load_dotenv()
    ID = os.environ['DB_ID']
    PASSWORD = os.getenv('DB_PASSWORD')
    DB_NAME = os.getenv('DB_NAME')

    // db 연결 url
    string = f"mongodb+srv://{ID}:{PASSWORD}@비밀이야.mongodb.net/{DB_NAME}?retryWrites=true&w=majority"

    client = MongoClient(string, tlsCAFile=certifi.where())
    db = client.spart

    // 연결 확인 예제
    doc = {
        'name':'bob',
        'age':27
    }

    db.users.insert_one(doc)


3. pymongo

pymongo로 mongo DB 조작하기

# 저장 - 예시
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)

# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})

# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
all_users = list(db.users.find({},{'_id':False}))

# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})

# 지우기 - 예시
db.users.delete_one({'name':'bobby'})


4. 후기

3주차 완료!

Java + Springboot + Mybatis(Sql Mapper)를 사용하여 프로젝트를 하다가 pymongo사용하여 간단한 crud를 해보니 확실히 직관적이고 편하다라는 걸 다시 한번 느낄 수 있었다.

🤔 앞으로 본격적인 향해99 커리큘럼을 들어가면 주특기라고해서 백엔드는 node.js와 spring 사이에서 선택하여 진행하게 되는데.. 아직도 너무 고민이다.
코딩은 점점 쉽게 구현하는 추세로 가고 있으나 한국은 java, spring이 꽉잡고 있고.. 이번 주차의 강의를 듣기전에는 spring으로 마음이 기울었었다. '차라리 어려운 걸 지금 배우고 가자!'와 '다시한번 직전의 자바와 스프링부트를 사용했던 프로젝트의 코드들을 돌아볼 수 있는 계기가 되었음 하는 마음'. 이 두가지 이유에서 였는데, 이번 주차의 강의를 들으면서 다시 고민을 하게 되었다..🫠 똑같은 구현을 한다하면 더욱 쉬운길이 있는데 spring을 선택하면 굳이 돌아가는 기분을 받아서 일까..?😵 참.. 개발자 직군을 목표로 잡고나서부터는 항상 선택이 가장 힘들다..! 그래도 꾸준히 뭐든 하면 실력은 는다는 것! 홧팅❗️


Ref.
kciter(MongoDB 이해하기)
스파르타코딩클럽

profile
개발자로 사는 내 삶은 즐거워 👾

0개의 댓글