DB 개념
잘 찾아서 가져다 쓰기 위함.
이러한 DB에는 크게 두가지 종류가 있다.
SQL
행과 열의 생김새가 정해져 있어, 엑셀과 유사하다.
데이터에 일관성이 있고, 분석에 용이하다.
단, 중간에 데이터를 추가하기는 어렵다.
ex) my-SQL
NoSQL
딕셔너리 형태로 데이터를 저장하며, 자유로운 형태를 지녀 중간에 데이터를 추가해도 상관이 없다.
단, 일관성은 부족하다.
ex) mongoDB
우선 python에서 mongoDB를 쓰려면 pymongo라는 패키지를 설치한다.
from pymongo import MongoClient # pymongo를 임포트 하기
client = MongoClient('localhost', 27017) # mongoDB는 27017 포트로 돌아갑니다.
db = client.db~ # 'db~'라는 이름의 db를 만듭니다.
패키지를 설치하면 이 세줄을 써줘야 한다.
# '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하나를 넣는다({어쩌구 저쩌구})
이런식으로 써줘야 한다.
# 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값을 모두 찾아주는 함수이다.
user = db.users.find_one({'name':'bobby'})
print(user)
조건에 해당하는 값 '하나'만 찾아주는 함수이다.
# 생김새
db.people.update_many(찾을조건,{ '$set': 어떻게바꿀지 })
# 예시 - 오타가 많으니 이 줄을 복사해서 씁시다!
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
Robo3T에서 users에 가보면 DB에 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'})
예외 코드
찾아서 다 바꿈 / 찾아서 다 지움
= 위험해서 잘 쓰지 않는다.