DB

정보구니·2021년 11월 1일
0

programing basic

목록 보기
8/12
post-thumbnail

3-11 DB개괄

DB

database를 쓰는 이유는 데이터를 '잘' 가져다 쓰기 위해서다.
예를 들어 책장을 쓰는 이유는 책을 잘 정리해서 나중에 책을 잘 찾기 위함과 비슷한 맥락이다 !


DB설치 확인하기

크롬 창에 localhost:27017이라고 쳐서 아래와 같은 화면이 나온다면 DB가 돌아가고 있는 것.


DB의 종류

SQL

행/열이 정해진 엑셀에 데이터를 저장하는 것과 유사
✔ 장점 : 정형화된 데이터를 뽑아가는 방식에는 최적화
✔ 단점 : 중간에 바꾸기가 불편
✔ ex) MS-SQL, My-SQL 등

NoSQL

딕셔너리 형태로 데이터를 저장 하는 DB
✔ 데이터마다 값이 다름
✔ 장점 : 데이터 변경에 유연하다.
✔ ex) MongoDB

📌 MongoDB

mongoDB : NoSQL 데이터베이스로, 실행되어도 눈에 보이지 않음
Robo3T : mongoDB의 데이터를 볼 수 있도록 시각화 하는 프로그램

우리는 Robo3T를 이용해 mongoDB의 데이터를 시각화시켜서 확인한다 !



3-12 Pymongo로 DB조작하기

pymongo

Python으로 mongoDB를 조작하기 위해서 남이 만들어 놓은 라이브러리인 Pymongo를 사용한다.


기본코드

from pymongo import MongoClient           # pymongo를 임포트 하기(패키지 인스톨 먼저 해야겠죠?)
client = MongoClient('localhost', 27017)  # mongoDB는 27017 포트로 돌아갑니다.
db = client.dbpymongo                     # 'dbpymongo'라는 이름의 db를 만듭니다.


# 코딩 시작



파이몽고 사용하기

insert

insert를 사용해 데이터를 저장할 수 있다.

# insert - 데이터 저장하기

# 'users'라는 collection에 넣기
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)


find / find_one

find/find_one를 사용해 데이터를 찾을 수 있다.

# find - 모든 결과 값을 보기

# mogoDB에 있는 데이터 모두 보기
all_users = list(db.users.find({},{'_id':False}))
# 반복문을 돌며 모든 결과값을 보기
for users in all_users:
    print(users)

# 결과
{'name': 'john', 'age': 30}
{'name': 'bobby', 'age': 21}
{'name': 'kay', 'age': 27}
{'name': 'jane', 'age': 21}


# mongoDB에서 특정 조건의 데이터 모두 보기
same_ages = list(db.users.find({'age':21},{'_id':False}))
for users in same_ages:
    print(users)

# 결과
{'name': 'bobby', 'age': 21}
{'name': 'jane', 'age': 21}
# find_one - 특정 결과 값을 뽑아보기

# mongoDB에서 {'name':'bobby'}인 데이터만 보기
user = db.users.find_one({'name':'bobby'},{'_id':False})
print(user)

# 결과
{'name': 'bobby', 'age': 21}

update_one

update_one를 사용해 데이터를 수정할 수 있다.

# update_one - 데이터 수정하기

# {'name':'bobby'}인 데이터를 찾아서 {'age':19}로 수정
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})


delete_one

delete_one를 사용해 데이터를 삭제할 수 있다.

그렇지만 데이터를 삭제하는 일은 위험하기때문에 대부분 쓰지 않는다.

# delete_one - 데이터 삭제하기

# {'name':'bobby'}인 데이터를 찾아서 삭제
db.users.delete_one({'name':'bobby'})

◽ 코드요약 ! (복붙용)

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

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

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

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

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


Quiz - pymongo(영화페이지)

저번에 한 영화페이지 크롤링 결과를 이용해서 pymongo를 연습해보려고 한다.


기본코드 넣기

from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbpymongo

## 코딩 시작

find_one (영화 '매트릭스'의 평점 가져오기)

target_movie = db.movies.find_one({'title':'매트릭스'})
print(target_movie['star'])

# 결과
9.39

find ('매트릭스'의 평점과 동일한 영화 제목들 가져오기)

target_movie = db.movies.find_one({'title':'매트릭스'})
terget_star = target_movie['star']

movies = list(db.movies.find({'star':terget_star}))

for movie in movies:
    print(movie['title'])
        
# 결과
인생은 아름다워
매트릭스
라이언 일병 구하기
사운드 오브 뮤직
헬프
포레스트 검프
안녕 베일리
글래디에이터
인생은 아름다워
.
.
.

update ('매트릭스'의 평점을 0으로 만들기)

db.movies.update_one({'title':'매트릭스'},{'$set':{'star':'0'}})


0개의 댓글

관련 채용 정보