웹 개발일지-3주차 4일차 (DB)

야자이너·2022년 4월 14일
0

Web

목록 보기
10/11

DB 설치 확인 링크

MongoDB = 데이터베이스, 데이터를 쌓아두는 것 하지만, 내 눈에 보이지 않게 돌아가는 형태
Robo3T = MongoDB의 데이터를 시각화해서 우리 눈으로 볼 수 있게 해주는 것

DB의 방법은 두가지.
1. RDBMS(SQL) 차곡차곡 규칙을 가지고 쌓는 형태 ex)MS-SQL, My-SQL 등
2. No-SQL 딕셔너리 형태로 데이터를 저장하는 DB SQL에 비해서 비정형화 되어져있음 ex) MongoDB

일단 2번, No-SQL 형태를 MongoDB를 이용해 연습해보자

파이썬의 pymongo 패키지를 다운받아 mongoDB 조작하기

기본 형태

//pymongo를 쓰겠다.
from pymongo import MongoClient
//내 컴퓨터에서 쓰고 있는 MongoDB에 접속하겠다.
client = MongoClient('localhost', 27017)
//dbsparta라는 이름으로 db에 접속하겠다
db = client.dbsparta

# insert / find / update / delete

1. insert

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

doc = {'name':'bobby','age':21}
db.users.insert_one(doc)

-> doc이라는 딕셔너리를 users라는 콜렉션에 인서트 해라.
딕셔너리를 쌓는 No-SQL이라고 해도 어느정도 구분짓기 위해서 콜렉션이라는 정리의 개념을 가짐.

위와 같이 적고 run을 돌린 다음 robo 3T에서 확인해보자.

서버 왼쪽 클릭- Refresh를 하면
이런 식으로 딕셔너리가 런을 돌릴때마다 한 개씩 추가되는 것을 볼 수 있다.

2. find

same_ages = list(db.users.find({'age':21},{'_id':False}))
print(same_ages)

[{'name': 'bobby', 'age': 21}, {'name': 'jane', 'age': 21}]

bobby,jane의 동일은 age 값을 찾아줌

{'age':21}이 조건/{'_id':False}은 _id 값은 나타내지 말라는 코드
조건없이 쓰고 싶을 때는 {}의 형태로 빈 중괄호를 쓰면 된다.

same_ages = list(db.users.find({},{'_id':False}))

반복문을 활용해 출력하게 하는 방법도 있다.

same_ages = list(db.users.find({'age':21},{'_id':False}))

for person in same_ages:
    print(person)
    
{'name': 'bobby', 'age': 21}
{'name': 'jane', 'age': 21}

find를 쓸 때 1가지만을 출력하는 방법

user = db.users.find_one({'name':'bobby'},{'_id':False})
print(user)

{'name': 'bobby', 'age': 21}

3. update

이미 쓰여진 한 개의 딕셔너리를 업데이트/변경 하고 싶을 때

db.users.update_one({'name':'bobby'},{'$set':{'age':19}})

이름이 bobby인 모든 딕셔너리의 age 값을 19로 변경해라-> 상당히 위험할 수 있음
때문에 주로 update_one을 사용한다.

db.users.update_many({'name':'bobby'},{'$set':{'age':19}})

4. delete

이름이 bobby인 애를 한 개 찾아서 삭제해라

db.users.delete_one({'name':'bobby'})

이름이 bobby인 애를 모두 찾아서 삭제해라

db.users.delete_many({'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'})

0개의 댓글