01. 제목
패스트캠퍼스 환급챌린지 35일차 미션 (3월 6일) :
파이썬으로 할 수 있는 모든 것 with 47개 프로젝트 초격차 패키지 Online 수강 후기
02. 포스팅 본문 (학습 일기) 가이드
1. 학습 인증샷 2장 이상 포함


2. 학습 후기 700자 이상 (공백 제외)
오늘은 챕터5의 쇼핑몰 데이터 베이스를 만들어보는 미니 프로젝트 실습과 챕터6의 암호화, 메세지 변조 탐지기 만드는 프로젝트에 대한 개요에 대해 짧게 배웠다.
쇼핑몰 데이터 베이스를 만드는 진행 순서는 아래의 총 4개의 순서로 진행한다.
1. 데이터 베이스 생성하기
2. 상품 리스트 테이블 생성하기
3. (고객의) 주문 목록 추가하기
4. (고객이 주문한) 총 구매 가격 산출하기
먼저 데이터 베이스를 생성할때 필요한 sqlite 3를 임포트 시켜준다. 가지고 있는 쇼핑몰 디비를 커넥트 해주고 커서까지 생성해주면 데이터 베이스 생성은 완성
import sqlite3
conn = sqlite3.connect("shopping_mall.db")
c = conn.cursor()
다음은 상품 리스트 테이블을 생성한다.
csv 파일로 테이블 추가하는 법과 튜플(리스트)로 테이블 추가하는 법이 있다.
csv 파일로 테이블 추가는 판다스를 이용해서 보기 좋게 해준다.
import pandas as pd
product_list = pd.read_csv('product_list.csv', encoding='euc-kr') # 상품정보 csv를 가져오고 이 정보는 한국어로 되어 있어서 인코딩 설정도 같이 해줘야한다. 불러온 리스트를 데이터 베이스에 추가 가능하다.
product_list.to_sql('productList', conn, if_exists='append', index=False)
리스트에 to_sql 사용해서 프로덕트리스트 테이블명, 데이터베이스 객체, 이미 테이블에 레코드가 있으면 뒤에 붙여라라는 append와 인덱스는 이미 id가 존재해서 false값으로 해준다.
이렇게 csv로 관리하면 데이터베이스를 손쉽게 추가할 수 있어서 편리하다.
다음은 튜플(리스트)로 테이블 추가하는 법은
product_list = [[1, '모자', 15000], [2, '코트', '200000'], [3, '티셔츠', '20000'], [4, '블라우스', '55000]] 레코드 들을 추가하고 테이블을 생성하는 c.execute("CREATE TABLE IF NOT EXISTS productList(ID INTEGER PRIMARY KEY AUTOINCREMENT, 상품명 TEXT, 가격 INTEGER") 한 다음 레코드 추가 코드
c.executemany("INSERT INTO productList (상품명, 가격) values (?, ?)", product_list)
conn.commit() 로 하면 된다.
다음은 사용자가 주문을 하는 것에 따라 업데이트 되는 주문 목록 추가, 새로운 테이블을 추가한다.
c.execute("CREATE TABLE IF NOT EXISTS orderList(ID INTEGER PRIMARY KEY AUTOINCREMENT, 상품명 TEXT, 개수 INTEGER, 가격 INTEGER, 총합 INTEGER") # 오더리스트에 존재하지 않으면 만들어라, 개수가 들어가게 되고 개수에 따라 합이 달라지므로 총합도 들어간다.
다음은 주문 목록 리스트에 업데이트 되는 로직이다.
while 문에 반복을 실행하고(조건이 성립할때까지) 상품 목록을 표시하고 (display), 사용자 상품 선택할 수 있게 메세지를 띄우고 어떠한 상품을 검색할지 입력을 받는다. num이라는 변수에 입력받고 프로덕트리스트에서 고객이 입력한 id(물음표)에 상품명과 가격을 가져와서 result에 저장한다.
그 다음 상품 번호와 주문 수량을 input 받고 count 변수에 넣어서 result 인덱스를 곱해줘서 total 총합을 매겨준다.
이 정보들을 주문 데이터 베이스에 데이터를 추가한다.
오더리스트 테이블에 인서트문을 이용해 컬럼 튜플형태로 각 각의 해당하는 정보를 넣어서 데이터를 추가한다.
현재까지 주문 내역을 출력하고 orderList를 셀렉트해서 보여준다. 디스플레이 되게 된다.
상품을 더 구매할지 여기서 확정할지 추가 구매 여부를 물어보는 출력문을 넣고 if문으로 input 값에 x가 들어가게 되면 break문 써서 while문을 빠져나오게 되고 다른키를 누르게 되면 계속해서 반복문이 오더리스트 추가하는 방식으로 반복된다. 여기까지 구매내역을 확정짓고 총 구매 가격 산출은
for row in c.execute('SELECT sum(총합) FROM orderList'):
print(' : ', row[0], '원') # 각 각 항목들의 총합을 프린트한다.
print('')해서 썸을 써서 총합을 구하게 된다.
모든 합이 끝났다면 그 다음 주문 내역 초기화한다.
c.execute("DELETE FROM orderList") # 다음 고객의 새로운 주문 목록 시작을 위해
최종 마지막은 항상 db 연결해제를 해준다.
conn.close()
챕터 5가 마무리 되었고 챕터 6은 파이썬에서 암호를 다루는 암호화 방법은 보안에서는 중요한 요소(비밀번호 관리, 개인정보 등)이므로 암호화 라이브러리 중에 메세지 변조 탐지기 만들기를 배운다.
계좌 원본이 있다면 돈을 송금하거나 이체하는 작업을 하기 위해 실제 원본이 맞는지 중간에 확인하는 과정을 거친다. 이때 해커가 이 메세지 변조를 하려는 시도(공격: 계좌번호를 바꾸거나 주민등록번호를 바꾸거나 이체금액을 바꾸거나 등)를 막기위해서 암호화된 계좌정보를 하나 만들고 비밀번호 암호화 하고 해커가 알아볼 수 없도록 만든다. 원본 데이터와 암호화된 데이터 사이를 비교하는 메세지 변조 탐지기에 담기게 된다. 이때 변조가 되었는지 안되었는지 감지해서 은행 서버가 알 수 있게 한다.
이때 암호화 계좌 정보는 re, hashlib과 비밀번호를 암호화하는 getpass 하고 변조 탐지인 hmac의 라이브러리를 사용한다.
사실 실전에선 이것보다 더 복잡한 방법으로(해커는 어떤식으로든 뚫으려고 하니까 실제로 뉴스에서도 다양한 방법으로 보안을 뚫는 것을 보았다. 뚫는 것보다 막는 게 훨씬 어려운 일이라 프로그래머들에게 존경의 박수를...) 보안을 암호화하고 유지시켜야할 것이다. 기본적으로 배우는 것도 어려운데 대단하다는 말밖에는... 무엇보다 암호화 파트는 좀 재미가 없을 것 같다는 편견이 있어서 어떻게 프로젝트가 진행될지 궁금하다.
03. 필수 본문 내용
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
04. 필수 해시태그
#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완
05. 필수 URL
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
[수강 강의 클립]
-Ch05. [데이터베이스] 쇼핑몰 데이터베이스 만들기
07. 미니 프로젝트 실습
-Ch06. [암호화] 개인정보는 소중해, 메세지 변조 탐지기 만들기
01. 프로젝트 개요
[※ 기타사항메모 ※]
{100% 환급챌린지 미션 가이드 참조 :
https://fastcampus.co.kr/event_online_challenge_2401_mission}
커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스
성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.
fastcampus.co.kr