개발일지3

o__o·2022년 4월 10일
0

개발일지

목록 보기
3/5

강의자료

파이썬을 설치한다?

→ 일종의 번역팩을 설치한다고 생각하면 됩니다.
컴퓨터는 101010001 과 같은 언어만 알아듣는다고 했지요?
파이썬 문법으로 된 것을 101010001로 변환해줄 수 있도록, 번역 패키지를 설치하는 것입니다.

* 변수 & 기본연산
a = 3 # 3을 a에 넣는다
b = a # a를 b에 넣는다
a = a + 1 # a+1을 다시 a에 넣는다

num1 = ab # ab의 값을 num1이라는 변수에 넣는다
num2 = 99 # 99의 값을 num2이라는 변수에 넣는다

* 자료형1(숫자, 문자형)
name = 'bob' # 변수에는 문자열이 들어갈 수도 있고,
num = 12 # 숫자가 들어갈 수도 있고,

is_number = True # True 또는 False -> "Boolean"형이 들어갈 수도 있습니다.
그리고 List, Dictionary 도 들어갈 수도 있죠.

* 자료형2(리스트헝(Javascript의 배열형과 동일))
a_list = []
a_list.append(1) # 리스트에 값을 넣는다
a_list.append([2,3]) # 리스트에 [2,3]이라는 리스트를 다시 넣는다

a_list의 값은? [1,[2,3]]
a_list[0]의 값은? 1
a_list[1]의 값은? [2,3]
a_list[1][0]의 값은? 2

  • 자료형3(Dictionary 형 (Javascript의 dictionary형과 동일))
    a_dict = {}
    a_dict = {'name':'bob','age':21}
    a_dict['height'] = 178

a_dict의 값은? {'name':'bob','age':21, 'height':178}
a_dict['name']의 값은? 'bob'
a_dict['age']의 값은? 21
a_dict['height']의 값은? 178

* 함수

#수학문제에서
f(x) = 2*x+3
y = f(2)
y의 값은? 7

#참고: 자바스크립트에서는
function f(x) {
return 2*x+3
}

#파이썬에서
def f(x):
return 2*x+3

y = f(2)
y의 값은? 7

* 조건문(if/else)
def oddeven(num): # oddeven이라는 이름의 함수를 정의한다. num을 변수로 받는다.
if num % 2 == 0: # num을 2로 나눈 나머지가 0이면
return True # True (참)을 반환한다.
else: # 아니면,
return False # False (거짓)을 반환한다.

result = oddeven(20)

  • 반복문(for in)
    파이썬에서의 반복문은, 리스트의 요소들을 하나씩 꺼내쓰는 형태입니다.
    무조건 리스트와 함께 쓰입니다!

fruits = ['사과','배','배','감','수박','귤','딸기','사과','배','수박']

count = 0
for fruit in fruits:
if fruit == '사과':
count += 1

print(count)
#사과의 갯수를 세어 보여줍니다.


패키지? 라이브러리?

Python 에서 패키지는 모듈(일종의 기능들 묶음)을 모아 놓은 단위입니다.
이런 패키지 의 묶음을 라이브러리 라고 볼 수 있습니다.

  1. 가상 환경(virtual environment) 이란? - 프로젝트별로 패키지들을 담을 공구함
    같은 시스템에서 실행되는 다른 파이썬 응용 프로그램들의 동작에 영향을 주지 않기 위해, 파이썬 배포 패키지들을 설치하거나 업그레이드하는 것을 가능하게 하는 격리된 실행 환경 입니다.

  2. pip(python install package) 사용 - requests 패키지 설치해보기
    앱을 설치할 때 앱스토어/플레이스토어를 가듯이,
    새로운 프로젝트의 라이브러리를 가상환경(공구함)에 설치하려면 pip 를 이용하게 됩니다.


태그 안의 텍스트를 찍고 싶을 땐 → 태그.text
태그 안의 속성을 찍고 싶을 땐 → 태그['속성']

beautifulsoup 내 select에 미리 정의된 다른 방법을 알아봅니다

#선택자를 사용하는 방법 (copy selector)
soup.select('태그명')
soup.select('.클래스명')
soup.select('#아이디명')

soup.select('상위태그명 > 하위태그명 > 하위태그명')
soup.select('상위태그명.클래스명 > 하위태그명.클래스명')

#태그와 속성값으로 찾는 방법
soup.select('태그명[속성="값"]')

#한 개만 가져오고 싶은 경우
soup.select_one('위와 동일')

#크롬 개발자도구를 참고할 수도 있습니다.
1. 원하는 부분에서 마우스 오른쪽 클릭 → 검사
2. 원하는 태그에서 마우스 오른쪽 클릭
3. Copy → Copy selector로 선택자를 복사할 수 있음


DB 데이터베이스 종류

RDBMS(SQL)

행/열의 생김새가 정해진 엑셀에 데이터를 저장하는 것과 유사합니다.
데이터 50만 개가 적재된 상태에서, 갑자기 중간에 열을 하나 더하기는 어려울 것입니다.
그러나, 정형화되어 있는 만큼, 데이터의 일관성이나 / 분석에 용이할 수 있습니다.
ex) MS-SQL, My-SQL 등

No-SQL
딕셔너리 형태로 데이터를 저장해두는 DB입니다.
고로 데이터 하나 하나 마다 같은 값들을 가질 필요가 없게 됩니다.
자유로운 형태의 데이터 적재에 유리한 대신, 일관성이 부족할 수 있습니다.
ex) MongoDB

DB는 간단하게, 우리가 쓰는 프로그램과 같은 것이랍니다.
즉, 내 컴퓨터에 게임도 설치하고, PPT도 설치하고, DB도 설치할 수 있는 것이죠.
이 마저도 요새는 Cloud 형태로 제공해주는 곳들이 많답니다.

  • 유저가 몰리거나 / DB를 백업해야 하거나 / 모니터링 하기가 아주 용이하기 때문이죠!

pymongo 라이브러리의 역할

예를 들어, MS Excel를 파이썬으로 조작하려면,
특별한 라이브러리가 필요하지 않겠어요?

마찬가지로, mongoDB 라는 프로그램을 조작하려면,
특별한 라이브러리, pymongo가 필요하답니다!

from pymongo import MongoClient
client = MongoClient('여기에 URL 입력')
db = client.dbsparta

pymongo 사용법. 코드 요약

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


메모

<파이썬 기초>
(변수)
(자료형) list = [''], dict = {'':'', '':''}

(함수) def sum(a,b):
return a+b

(조건문) if 조건:
결과
else:
결과

  • : tab(들여쓰기) 다음부터는 나의 내용물입니다.

(반복문) 리스트와 함께 쓴다 for in

( 예제 1 )
count = 0
for fruit in fruits:
if fruit == '사과':
count += 1
print(count)

( 예제 2 )
for ppp in people:
if ppp['age'] > 20:
print(ppp['name'])


<라이브러리>
라이브러리 = 패키지 묶음
패키지 = 모듈(기능묶음)을 모아놓은 단위

venv (virtual environment, 가상환경) = 프로젝트별로 패키지들을 담을 공구함
(프로젝트마다 쓰는 라이브러리 버전이 다를수도 있기떄문에!)

pip (python install package)

Ajax 같은 역할을 하는 패키지 requests 를 깔았다!
-> import requests


<웹스크래핑=크롤링>
패키지 추가설치 beautifulsoup4

크롤링을 하려면 두가지를 한다.
requests를 해서 html을 가져오는 것
특정값 찾게해주는 라이브러리 = beautifulsoup4

패키지 beautifulsoup4 를 깔았다!
-> from bs4 import BeautifulSoup

headers = 코드에서 콜 날리듯이, 브라우저에서 콜 날린것처럼 (사람인것처럼) 해주려고 쓰는 용도
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)

<bs4 쓰는 방법>
링크 내 특정값 - 오른쪽마우스 검사 - copy - copy selector

bs4 결과값 볼 때 태그에서
값을 텍스트로만 보려면 print(title.text)
경로(?) 보려면 print(title['href'])

같다 ==
아니다 != , is not


<데이터베이스>
데이터를 잘 가져오게하는 프로그램이다
db에는 index라는 순서로 데이터들이 정렬되어있다!

RDBMS(SQL)
: 행/열의 생김새가 정해진 엑셀에 데이터를 저장하는 것과 유사합니다. 데이터 50만 개가 적재된 상태에서, 갑자기 중간에 열을 하나 더하기는 어려울 것입니다. 그러나, 정형화되어 있는 만큼, 데이터의 일관성이나 / 분석에 용이할 수 있습니다.
ex) MS-SQL, My-SQL 등
: 정형화되어있고, 빨리 찾을수있으나 유연한 대처가 어려움

No-SQL (Not only SQL)
: 딕셔너리 형태로 데이터를 저장해두는 DB입니다. 고로 데이터 하나 하나 마다 같은 값들을 가질 필요가 없게 됩니다. 자유로운 형태의 데이터 적재에 유리한 대신, 일관성이 부족할 수 있습니다.
ex) MongoDB

-> 유저가 몰리거나 / DB를 백업해야 하거나 / 모니터링 하기가 아주 용이하기 때문에 컴퓨터에 까는것 보다 클라우드 형태로 이용하는게 트랜드!
ex) mongoDB Atlas 클라우드 환경에서 mongoDB가 제공해주는 서비스
: 그때그때 쌓이기때문에 유연하게 대처할수있다(초기서비스에 유용)


패키지 추가설치 pymongo, dnspython

data 넣고 mongoDB 에서 데이터가 잘 들어갔는지 보기 : browse collections

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


<웹스크래핑 결과 저장하기>

  • db연결을 위한 즐겨찾기
    from pymongo import MongoClient
    client = MongoClient('mongodb+srv://test:sparta@cluster0.mswdg.mongodb.net/cluster0?retryWrites=true&w=majority')
    db = client.dbsparta

https://cloud.mongodb.com/


<정리>

  • 웹서비스를 만들기위해 필요한 것 2가지
    1) 눈에보이는 것을 만드는 HTML, CSS, Javascript
    2) 눈에보이는 것을 주는 서버
  • 서버를 만들수있는 프로그래밍 언어: 파이썬 / (db)

.strip() : 여백없애기

0개의 댓글