보통 우리는 SQL을 통해서 데이터베이스에 접근 후에 데이터 수정 및 추출을 하는 것이 익숙할 것입니다.
허나, 재미있는 것은 실제 데이터를 분석하고 추출할 때 SQL을 사용하지 않고 다른 방법을 사용합니다. 그것이 바로 몽고DB입니다.
이번 이어드림에서 첫 실습은 바로 파이썬으로 몽고디비를 활용하여 데이터 베이스를 생성, 추가 그리고 조건에 맞게 추출했습니다.
이제 그 코드에 관해서 이야기하겠습니다.
이번 블로그는 NOSQL의 대표인 몽고 DB를 파이썬으로 어떻게 이용하는지 CODE를 통해서 보여드릴 것입니다.
MongoDB의 Altas를 활용하여 Databse 만들었습니다.
mongo_path = "링크"
라이브러리 호출 및 변수명 할당
DB생성
DB추출 및 추가
조건에 맞게 DB에서 데이터 값 추출하기
and
$or
$gte
mongo_path = 'mongodb+srv://sehyun:Tpgus343!@cluster0.txbgo.mongodb.net/myFirstDatabase?retryWrites=true&w=majority'
#! pip install pymongo[srv]:설치한 후 다시 런 런타임
#라이브러리 호출
from pymongo import MongoClient # mongoDB 접속을 비롯한 엑셀을 할 때 사용하는 라이브러리
import requests #python file에서 접속이 필요할 때 사용하는 라이브러리
import pandas as pd #dataframe 단위 작업을 할 때 사용하는 라이브러리(이번 수업 필요 x)
client = MongoClient(mongo_path)
client
client.Cluster0.list_collection_names()
['users']
db = client.Cluster0 #db는 몽고 DM의 데이터 베이스
new_collection = db.posts
new_collection.insert_one({'title':'hello, mongo', 'content':'Hello, all!'}) #하나만 출력할거기에 one
db.list_collection_names() #잘 되었는지 확인합니다.
#['posts','users']
query ={}
db.posts.find_one(query) #db의 첫번째 부분을 가져온다.위의 Insert_one 한 데이터가 나온다
#DB생성
many_posts = [
{'title': 'post 1', 'content': 'this is post 1'},
{'title': 'post 2', 'content': 'this is post 2'},
{'title': 'post 3', 'content': 'this is post 3'}
]
new_collection.insert_many(many_posts) #여러 개를 출력하려고 하기에 many
query={}
cursor = new_collection.find(query) #검색 결과를 cursor에 할당
[item for item in cursor] #cursor 안에 있는 것들이 여러 개 이기에 리스트 형식으로 하나씩 뽑기, 리스트 컴프리헨션
user_collec = db.users
many_users = [
{'name':"John Doe", 'email':"jd@gmail.com"},
{'name':"Jane Doe", 'email':"jane@gmai.com"},
{'name':"Gil-dong Hong", 'email':"gdhong@naver.com"},
]#trailing comma: 마지막 자료의 뒤에 붙는 쉼표
user_collec.insert_many(many_users)
query = {}
cursor = user_collec.find(query) #전체 내용을 query에 넣어라
[item for item in cursor]
#특정 조건을 query안에 설정
#일치하는 자료만 뽑기
query = {
"name":'John Doe'
}
cursor = user_collec.find(query) #특정 내용을 query에 넣어라
[item for item in cursor] #조건에 일치하는 자료만 나오라
#이메일 일치한 경우 이름 출력
query = {
'email':'jane@gmai.com'
}
cursor = user_collec.find(query) #특정 내용을 query에 넣어라
[item for item in cursor]#조건에 일치하는 자료만 나오라
#이름이 홍길동이고 이메일도 같은지
query = {
"name":'Gil-dong Hong', 'email':'gdhong@naver.com'
}
cursor = user_collec.find(query)
[item for item in cursor]
query = {
'$or': [
{'name':'John Doe'},
{'email':"jane@gmai.com"}
]
}
cursor = user_collec.find(query)
[item for item in cursor]
기존 DB자료에 나이 추가하기
many_users = [
{'name':"John Doe", 'email':"jd@gmail.com","age":30},
{'name':"Jane Doe", 'email':"jane@gmai.com","age":20},
{'name':"Gil-dong Hong", 'email':"gdhong@naver.com","age":10},
]#trailing comma: 마지막 자료의 뒤에 붙는 쉼표
user_collec.insert_many(many_users)
[item for item in user_collec.find({})] # 잘 들어갔는지 확인하기
#조건 설정
query = {
'age':{'$gte':20}
}
cursor = user_collec.find(query)
[item for item in cursor]