728x90
데이터베이스(DataBase)
데이터베이스는(DB : database)는 통합하여 관리되는 데이터의 집합체를 의미한다.
이는 중복된 데이터를 없애고, 자료를 구조화하여, 효율적인 처리를 할 수 있도록 관리된다.
따라서, 여러 업무에 여러 사용자가 데이터 베이스를 사용할 수 있다.
👉 데이터베이스의 특징
1. 사용자의 질의에 대하여 즉각적인 처리와 응답이 이루어진다.
2. 생성, 수정, 삭제를 통하여 항상 최신의 데이터를 유지한다.
3. 사용자들이 원하는 데이터를 동시에 공유할 수 있다.
4. 사용자가 원하는 데이터를 주소가 아닌 내용에 따라 참조할 수 있다.
5. 응용프로그램과 데이터베이스는 독립되어 있으므로,
데이터의 논리적 구조와 응용프로그램은 별개로 동작된다.
DB의 두 가지 종류 (SQL, NoSQL)
RDBMS(SQL) 관계형 데이터베이스 관리 시스템
관계형 데이터베이스는 현재 가장 많이 사용되고 있는 데이터베이스의 한 종류이다.
행/열의 생김새가 정해진 엑셀에 데이터를 저장하는 것과 유사하다.
데이터 50만 개가 적재된 상태에서, 갑자기 중간에 열을 하나 더하기는 어려울 것이다.
그러나, 정형화되어 있는 만큼, 데이터의 일관성이나 / 분석에 용이할 수 있다.
ex) MS-SQL, My-SQL 등
특징
1. 데이터의 분류, 정렬, 탐색 속도가 빠르다.
2. 오랫동안 상용된 만큼 신뢰성이 높고, 어떤 상황에서도 데이터의 무결성을 보장해 준다.
3. 기존에 작성된 스키마를 수정하기 어렵다.
4. 데이터베이스의 부하를 분석하는 것이 어렵다.
No-SQL
딕셔너리 형태로 데이터를 저장해두는 DB이다.
고로 데이터 하나하나마다 같은 값들을 가질 필요가 없게 된다.
자유로운 형태의 데이터 적재에 유리한 대신, 일관성이 부족하다.
ex) MongoDB
MongoDB 사용해보기
> mongoDB - Atlas 연결하기
pymongo 라이브러리의 역할
예를 들어, MS Excel를 파이썬으로 조작하려면,
특별한 라이브러리가 필요하다.
마찬가지로, mongoDB 라는 프로그램을 조작하려면,
특별한 라이브러리, pymongo가 필요하다.
1. 패키지 설치!
pymongo, dnspython
2. pymongo로 조작하기
#pymongo 기본 코드
from pymongo import MongoClient
client = MongoClient('여기에 mongoDB에서 받은 코드 URL넣기 ')
db = client.dbsparta
> 잘 연결됐는지 테스트해보기
doc = {
'name':'bob',
'age':27
}
db.users.insert_one(doc)
결과
pymongo로 DB조작하기
👉 pymongo 코드 요약!
from pymongo import MongoClient
client = MongoClient('여기에 mongoDB에서 받은 코드 URL넣기')
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'})
크롤링 데이터 mongoDB에 저장하기
앞서 파이썬으로 웹툰 순위 크롤링한 것을 DB에 저장해보기
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
client = MongoClient('여기에 mongoDB에서 받은 코드 URL넣기')
db = client.dbsparta
# URL을 읽어서 HTML를 받아오고,
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('https://comic.naver.com/index',headers=headers)
# HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦
soup = BeautifulSoup(data.text, 'html.parser')
# select를 이용해서, tr들을 불러오기
webs = soup.select('#realTimeRankFavorite > li')
#realTimeRankFavorite > li.rank01 > a
# webs (tr들) 의 반복문을 돌리기
for web in webs:
# web 안에 a 가 있으면,
a = web.select_one('a')
if a is not None:
# a의 text를 찍어본다.
title = a.text
#DB저장
doc = {
'title': title
}
db.webs.insert_one(doc)
결과
위에 글 내용은 오류 사항이 존재할 수 있습니다!
수정 사항이 있을 시 알려주시면 감사하겠습니다.
728x90
'내일배움단 개발일지' 카테고리의 다른 글
12. 4주차 - Flask (0) | 2022.08.21 |
---|---|
11. 3주차 - 숙제 (0) | 2022.08.20 |
9. 3주차 - 파이썬 (패키지설치, 크롤링) (0) | 2022.08.16 |
8. 3주차 - 파이썬 (설치, 기초) (0) | 2022.08.12 |
7. 2주차 - 숙제 (0) | 2022.08.11 |
댓글