티스토리 뷰
◎ 데이터베이스(DB)
- DB를 쓰는 이유?
데이터를 저장하고 나중에 잘 찾기 위해!
○ DB의 종류
- SQL : 행/열에 데이터를 저장하는 것. 정형화되어 있는 만큼, 데이터의 일관성이나 분석에 용이하지만 중간에 열을 하나 더하는 건 어렵다.
-NoSQL : 딕셔너리 형태로 데이터를 저장해두는 DB. 데이터 하나 하나 마다 같은 값들을 가질 필요가 없으므로 자유로운 형태의 데이터 적재에 유리하다. 하지만 일관성이 부족하다.
DB는 컴퓨터가 아닌 프로그램으로 설치하면 사용할 수 있다.
요새는 Cloud형태에서 제공하는 DB를 많이 사용한다.
왜?
유저가 몰리거나 / DB를 백업해야 하거나 / 모니터링 하기에 아주 용이하다.
수업에서도 Cloud형태에서 제공하는 NoSQL의 종류인 mongoDB Atlas를 사용한다.
○ 몽고db와 파이썬을 연결하기
연결을 위해서는 설치해야할 패키지가 있다.
> pymongo, dnspython < 을 설치하자.
새 파일에서 연습하자.
pymongo기본 코드를 넣어보자. (코드스니펫 사용)
from pymongo import MongoClient
client = MongoClient('여기에 URL 입력')
db = client.dbsparta
이제 몽고DB페이지로 가서 연결하자.
connect의 connect your application을 누른 다음 드라이브를 파이썬으로 바꾼다.
코드를 복사한 후 url입력란에 넣어준다.
비밀번호를 바꾸어준 후 데이터를 넣어보자.
doc = {
'name':'bob',
'age':27
}
db.users.insert_one(doc)
오류메세지가 뜬다.
여기서 오류 메세지를 잘 살펴보면 'CERTIFICATE_VERIFY_FAILED'라고 되어있는데
이 부분은 'certifi'패키지를 설치하면 된다.
설치 후 certifi를 연결 하고 client의 뒤에 추가해야한다.
from pymongo import MongoClient
import certifi
ca = certifi.where()
client = MongoClient('mongodb+srv://test:<비밀번호>@cluster0.e4xrhvc.mongodb.net/cluster01?retryWrites=true&w=majority',tlsCAFile=ca)
db = client.dbsparta
다시 실행하면 프로세스가 종료되었다고 출력된다.
이제 몽고DB에 가서 확인해보자.
browse collections를 누르면 확인할 수 있다.
파일명은 언제 생긴걸까?
위에서 입력코드를 넣을 때 db의 users라는 collection에 doc값을 넣는다는 코드를 작성했기 때문이다.
○ 파이썬으로 DB조작하기
● 데이터 넣기
users라는 collection에 정보를 넣어보자.
db.users.insert_one({'name':'bobby','age':21})
db.users.insert_one({'name':'kay','age':27})
db.users.insert_one({'name':'john','age':30})
각각의 정보를 따로 넣을 수도 있지만 자료형으로 데이터를 묶은 다음 한번에 넣는게 더 편리하다.
● 모든 결과값 보기 ( find( ) )
users에 넣어둔 모든 데이터를 뽑아보자.
all_users = list(db.users.find({},{'_id':False}))
print(all_users)
조건을 달아 뽑고싶다면 {}안에 조건을 넣어준다.
리스트형식으로 나오기때문에 하나씩 찍어준다.
all_users = list(db.users.find({},{'_id':False}))
for user in all_users:
print(user)
● 특정 결과값 출력하기 ( find_one( ) )
이름이 'bobby'인 결과값만 출력해보자.
user = db.users.find_one({'name':'bobby'})
print(user)
여기서 나이만 출력하고 싶다면?
print(user['age'])
● 수정하기 ( update_one( ) )
'bobby'의 나이를 바꾸어보자.
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
이름이 'bobby'인 곳의 'age'를 19로 바꾸어라.
● 삭제하기 ( delete_one( ) ) → 잘 안씀
이름이 'bobby'인 데이터를 없애보자.
db.users.delete_one({'name':'bobby'})
bobby의 데이터값이 삭제되었다.
○ 연습하기
영화 순위, 제목, 별점 크롤링 한 것을 DB에 넣어보자.
db연결을 하기 위해 크롤링한 파일 안에 pymongo를 연결해준다.
데이터를 넣어보자.
데이터를 넣는 동작은?
.insert_one()
먼저, 들어갈 데이터에 해당하는 값을 정해준다.
doc = {
'rank': rank,
'title': title,
'star': star
}
새로운 폴더를 만들어 데이터를 넣어보자.
db.movies.insert_one(doc)
'movies'라는 폴더가 새로 생기고 안에 데이터가 들어갔다.
'코딩 > 스파르타코딩-웹개발' 카테고리의 다른 글
웹개발 4주차 개발일지(1) - flask (0) | 2022.10.24 |
---|---|
웹개발 3주차 개발일지(4) - DB연습하기, 크롤링 연습하기 (0) | 2022.10.23 |
웹개발 3주차 개발일지(2) - 파이썬 패키지 사용하기, 크롤링 (0) | 2022.10.18 |
웹개발 3주차 개발일지(1) - 파이썬 기초 문법 (0) | 2022.10.17 |
웹개발 2주차 개발일지(3) - Ajax 연습하기 (0) | 2022.10.13 |