[Python] [크롤링] 기본개념 2

doyeonlee·2022년 2월 6일
0

개발일지 2022

목록 보기
8/16
post-thumbnail

DB 개념

잘 찾아서 가져다 쓰기 위함.
이러한 DB에는 크게 두가지 종류가 있다.


SQL vs NoSQL

SQL

행과 열의 생김새가 정해져 있어, 엑셀과 유사하다.
데이터에 일관성이 있고, 분석에 용이하다.
단, 중간에 데이터를 추가하기는 어렵다.

ex) my-SQL

NoSQL

딕셔너리 형태로 데이터를 저장하며, 자유로운 형태를 지녀 중간에 데이터를 추가해도 상관이 없다.
단, 일관성은 부족하다.

ex) mongoDB


pymongo

우선 python에서 mongoDB를 쓰려면 pymongo라는 패키지를 설치한다.

from pymongo import MongoClient           # pymongo를 임포트 하기
client = MongoClient('localhost', 27017)  # mongoDB는 27017 포트로 돌아갑니다.
db = client.db~                     # 'db~'라는 이름의 db를 만듭니다.

패키지를 설치하면 이 세줄을 써줘야 한다.


insert

# 'users'라는 collection에 {'name':'bobby','age':21}를 넣습니다.
db.users.insert_one({'name':'bobby','age':21})
db.users.insert_one({'name':'kay','age':27})
db.users.insert_one({'name':'john','age':30})

DB를 insert(추가) 하려면
db의 users파일에 insert_one하나를 넣는다({어쩌구 저쩌구})
이런식으로 써줘야 한다.


find

# MongoDB에서 데이터 모두 보기
# 모든 조건이 보고싶다 = 빈 중괄호 쓰기
all_users = list(db.users.find({}))

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

print(all_users[0])         # 0번째 결과값을 보기
print(all_users[0]['name']) # 0번째 결과값의 'name'을 보기

for user in all_users:      # 반복문을 돌며 모든 결과값을 보기
    print(user)

조건과 맞는 DB값을 모두 찾아주는 함수이다.


find_one

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

조건에 해당하는 값 '하나'만 찾아주는 함수이다.


update_on

# 생김새
db.people.update_many(찾을조건,{ '$set': 어떻게바꿀지 })

# 예시 - 오타가 많으니 이 줄을 복사해서 씁시다!
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})

Robo3T에서 users에 가보면 DB에 bobby라는 이름이 추가된 것을 확인할 수 있다.


delete_one

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

잘 사용하지 않는다...!


pymongo 코드 요약

# 저장 - 예시
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'})

예외 코드

update_many, delete_many

찾아서 다 바꿈 / 찾아서 다 지움
= 위험해서 잘 쓰지 않는다.


profile
느려도 천천히 꼼꼼하게 !

0개의 댓글