본문 바로가기

학습 내용 정리/python

Python DB 기초 : 스파르타 코딩클럽 웹개발 종합반 3주차

728x90

오늘은 대망의 파이썬에 대해 공부하였다. 파이썬과 데이터베이스로 할 수 있는 재밌는 것들을 정리한다.

심지어 클라우드 데이터 베이스라고 한다!!! 

 

1. Python 기초 

1-0. 파이썬은 줄을 잘 맞춰야 한다!

 

1-1.  Print

print(‘hello world’)

 

1-2. Dictionary

a = {'name':'영수', 'age':24}
print(a['name'])

 

1-3. def

def hey():
    print('헤이!')

 

1-4. 조건문

age = 25

if age > 20:
    print('성인입니다')
else:
    print('청소년입니다')

 

1-5. 반복문

ages = [5,10,13,23,25,9]

for a in ages:
    if a > 20:
        print('성인입니다')
    else:
        print('청소년입니다')

 

1-6. 파이썬 파일 실행

python3 파일이름.py

 

2.  가상환경 만들기

⊞ Windows : 인터프리터 선택

 Mac : 3.8.6. 64-bit (나의 파이썬 버전)

 

⊞ Windows  Mac : 3.8.6. 64-bit

하단의 3.8.2 64-bit를 누르면 Select Interpreter 창이 등장한다

⊞ Windows : python -m venv venv

 Mac : python3 -m venv venv

명령어를 입력하면 venv 라는 폴더가 생긴다

3.  pip 와 requests

라이브러리 : 누군가 만들어 놓은 코드 조각

pip : 파이썬 라이브러리 관리

Requests : fetch 의 역할

Requests python docs : requests 라는 라이브러리 사용법

 

 

pip install requests 입력

 

4.  구 미세먼지 농도 뽑기

import requests 
r = requests.get('http://spartacodingclub.shop/sparta_api/seoulair')
rjson = r.json()

rows = rjson['RealtimeCityAir']['row']

for a in rows:
    gu_name = a['MSRSTE_NM']
    gu_mise = a['IDEX_MVL']
    print(gu_name,gu_mise)

 

5.  venv 로 바꿔 주기

 

6.  Beautiful Soup 4 (bs4) 라이브러리 설치

pip install bs4

7.  크롤링 

웹페이지 검사 나오는 HTML 어떤 부분을 솎아내서 가져오는

 

1) copy selector

검사 > Copy - copy selector 

에서 복사된 것을

soup.select_one(‘ 안에 붙여넣기’)

 

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')

title = soup.select_one('#mainContent > div > div.box_ranking > ol > li:nth-child(6) > div')
print(title.text)

 

2) 제목 가져오기

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:
    title = li.select_one('.link_txt')
    print(title.text)

 

3) 순위와 평점 가져오기

검사> 네모창과 화살표 아이콘 누르기

원하는 자료 클릭

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('.link_txt').text
    rate = li.select_one('.txt_grade').text
    print(rank,title,rate)

 

4) python 문서 정리 팁

.strip()  : 띄어쓰기 제거

.repalce()  : 특정문자바꾸기

 

8.  DB 기본 개념

DB: DataBase : 잘 가지고 오는 게 중요

 

SQL vs NoSQL (Not only SQL)

 

SQL: 정해진 칸에 데이터 넣기

장점: 사람이 실수할 일이 적다 (비즈니스가 크고 잘 안 바뀌는 곳)

 

NoSQL: 데이터를 내 마음대로 저장

장점: 비즈니스의 유연성 (바꿀 수 있음)

 

요즘: DB 클라우드 환경에 올려 놓는다 (ex: mongoDB)

 

9. dnspython  pymongo 설치

pip install dnspython
pip install pymongo
pip install certifi

 

10. MongoDB 사용법

1) MongoDB 에서 connect 클릭하기

 

2) Drivers 클릭하기

 

3) Python - 3.6 or later 클릭하기 > 주소 복사

 

11. MongoDB

11-1.  pymongo MongoDB 조작하기

# 저장 
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'})

11-2.  자료 넣기  

from pymongo import MongoClient
import certifi

ca = certifi.where()

client = MongoClient('mongodb+srv://sparta:test@cluster0.0uiki8z.mongodb.net/?retryWrites=true&w=majority', tlsCAFile=ca)
db = client.dbsparta

doc = {
    'name' : '영수',
    'age' : 24
}
db.users.insert_one(doc)

12. 퀴즈

12-1. 영화 <자전거 도둑> 평점 가져오기

from pymongo import MongoClient
import certifi

ca = certifi.where()

client = MongoClient('mongodb+srv://sparta:test@cluster0.0uiki8z.mongodb.net/?retryWrites=true&w=majority', tlsCAFile=ca)
db = client.dbsparta

info = db.movies.find_one({'title':'자전거 도둑'})
print(info['rate'])

12-2. 영화 <자전거 도둑> 평점이 같은 것들의 제목을 가져오기

from pymongo import MongoClient
import certifi

ca = certifi.where()

client = MongoClient('mongodb+srv://sparta:test@cluster0.0uiki8z.mongodb.net/?retryWrites=true&w=majority', tlsCAFile=ca)
db = client.dbsparta

info = db.movies.find_one({'title':'자전거 도둑'})
samerank = info['rate']
movielist = list(db.movies.find({'rate' : samerank}))

for a in movielist : 
    print(a['title'])

12-3. 영화 자전거 도둑의 평점을 0 으로 만들기

from pymongo import MongoClient
import certifi

ca = certifi.where()

client = MongoClient('mongodb+srv://sparta:test@cluster0.0uiki8z.mongodb.net/?retryWrites=true&w=majority', tlsCAFile=ca)
db = client.dbsparta

db.movies.update_one({'title':'자전거 도둑'},{'$set':{'rate':0}})

 

13. 과제

지니 뮤직에서 순위, 제목, 가수 가져오기

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')

lis = soup.select('#body-content > div.newest-list > div > table > tbody >tr')
for li in lis:
    rank = li.select_one('td.number').text[0:2].strip( )
    title = li.select_one('a.title.ellipsis').text.strip( )
    artist = li.select_one('a.artist.ellipsis').text.strip( )
    print(rank, title,'-', artist)

 

14. 소감

흥미가 있었던 과목에 대해 알게 되는 건 즐거움이고 기쁨이다. 언젠가 작은 무언가를 만들 수도 있지 않을까 하는 희망이 보이는 것 같다. 다만 의문이 생기면 종종 해결할 때까지 막혀 버려서 진도가 조금 더딘 것 같다. 파이팅...!

'학습 내용 정리 > python' 카테고리의 다른 글

파이썬 문법 뽀개기 : 심화  (0) 2024.07.19
파이썬 문법 뽀개기 : 기초  (0) 2024.07.19
PULL methods 미스테리 3 : 해결완료  (0) 2023.05.22
PULL Methods 미스테리 2  (0) 2023.05.22
PULL methods 미스테리  (0) 2023.05.21