MongoDB with Python

매일 공부(ML)·2022년 4월 6일
0

이어드림

목록 보기
2/146

Intro

보통 우리는 SQL을 통해서 데이터베이스에 접근 후에 데이터 수정 및 추출을 하는 것이 익숙할 것입니다.

허나, 재미있는 것은 실제 데이터를 분석하고 추출할 때 SQL을 사용하지 않고 다른 방법을 사용합니다. 그것이 바로 몽고DB입니다.

이번 이어드림에서 첫 실습은 바로 파이썬으로 몽고디비를 활용하여 데이터 베이스를 생성, 추가 그리고 조건에 맞게 추출했습니다.

이제 그 코드에 관해서 이야기하겠습니다.

이번 블로그는 NOSQL의 대표인 몽고 DB를 파이썬으로 어떻게 이용하는지 CODE를 통해서 보여드릴 것입니다.


CODE

  1. MongoDB회원가입하기

MongoDB의 Altas를 활용하여 Databse 만들었습니다.

  1. DB의 링크를 가져와서 Python으로 설정

mongo_path = "링크"

  1. 라이브러리 호출 및 변수명 할당

  2. DB생성

  3. DB추출 및 추가

  4. 조건에 맞게 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]

profile
성장을 도울 아카이빙 블로그

0개의 댓글