Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- JoinColumn
- json
- queryDSL
- 스프링 부트 공식 문서
- REST란
- 1차캐시
- spring서버
- Filter
- jpa에러
- REST API 규칙
- Q 클래스
- uncheck Exception
- 스프링부트오류
- 인텔리제이
- JPA
- github
- 복합키
- 스프링 부트 기능
- Unsatisfied dependency
- jpa회원가입
- 최종 프로젝트
- JPA주의사항
- Error creating bean with name
- ERD 작성
- 빈생성안됨
- json gson 차이
- jwt메서드
- Spring Spring boot 차이
- git
- @IdClass
Archives
- Today
- Total
Everyday Dev System
웹개발 종합반 3일차 -2 본문
20230510 - 3:50 pm -
파이썬 & MongoDB
MongoDB Atlas
목차
1. SQL 과 NoSQL 차이
2. pymongo 개념
3. pymongo 활용 연습 문제
4.
1. SQL 과 NoSQL 차이
RDBMS(sql) 이미 정해진 칸에 데이터를 주입.
엑셀과 같은 느낌으로 정해진 틀이 있음.
NoSQL은 비즈니스 유연성을 활용. 정해진 틀이 없음.
현업에서는 DB를 클라우드에 올려서 가져다가 씀.
2. pymongo 개념
pip install dnspython
pip install pymongo
기본 코드 :
from pymongo import MongoClient
client = MongoClient('여기에 URL 입력')
db = client.dbsparta
URL은 mongoDB에 [connect] - [Driver] 해서 URL 복붙. (password는 개인 비밀번호로 변경해야 연결됨.)
1) 데이터 입력
from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@limchaeyoung.boi4rwj.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta
doc = {
'name' : '영수',
'age' : 24
}
db.users.insert_one(doc)
2) 데이터 불러오기
from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@limchaeyoung.boi4rwj.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta
all_users = list(db.users.find({},{'_id':False}))
for a in all_users :
print(a)
user = db.users.find_one({},{'_id':False})
print(user)
결과:
{'name': '영수', 'age': 24}
{'name': '영희', 'age': 30}
{'name': '철수', 'age': 20}
{'name': '영수', 'age': 24}
3) 수정 및 삭제
db.users.update_one({'name':'영수'},{'$set':{'age':19}})
db.users.delete_one({'name':'영수'})
요약
from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@limchaeyoung.boi4rwj.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta
# 저장 - 예시
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)
# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})
# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
all_users = list(db.users.find({},{'_id':False}))
# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
# 지우기 - 예시
db.users.delete_one({'name':'bobby'})
3. pymongo 활용 연습 문제
1) 영화 데이터 mongoDB에 입력하기
from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@limchaeyoung.boi4rwj.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta
import requests
from bs4 import BeautifulSoup
URL = "https://movie.daum.net/ranking/reservation"
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get(URL, headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
lis = soup.select('#mainContent > div > div.box_ranking > ol > li')
for li in lis :
rank = li.select_one(".rank_num").text
title = li.select_one(".tit_item").text.strip("\n")
rate = li.select_one(".txt_grade").text
doc = {
'title' : title,
'rank' : rank,
'star' : rate
}
db.movies.insert_one(doc)
2)
from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@limchaeyoung.boi4rwj.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta
# 존 윅 4 의 평점 가져오기
# 존 윅 4 평점과 같은 평점의 영화 이름 출력하기
movie = db.movies.find_one({'title':'존 윅 4'})
target_star = movie['star']
print(target_star)
movies = list(db.movies.find({'star':target_star},{'_id':False}))
for a in movies:
print(a['title'])
# 존 윅 4 의 평점 0점으로 수정하기
db.movies.update_one({'title':'존 윅 4'},{'$set':{'star':0}})
# 지니 뮤직의 1-50위 곡 스크래핑
import requests
from bs4 import BeautifulSoup
URL = "https://www.genie.co.kr/chart/top200?ditc=M&rtm=N&ymd=20230101"
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get(URL, headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for tr in trs :
title = tr.select_one('td.info > a.title.ellipsis').text.strip()
rank = tr.select_one('td.number').text[0:2].strip()
artist = tr.select_one('td.info > a.artist.ellipsis').text
print(rank, title, artist)
'내배캠 초기 학습 > 웹개발 종합반' 카테고리의 다른 글
웹개발 종합반 4일차 -2 (1) | 2023.05.12 |
---|---|
웹개발 종합반 4일차 -1 (0) | 2023.05.12 |
웹개발 종합반 3일차 -1 (1) | 2023.05.10 |
웹개발 종합반 2일차 - 2 (2) | 2023.05.09 |
웹개발 종합반 2일차 -1 (0) | 2023.05.09 |