본문 바로가기
[챌린지]/[패스트캠퍼스] 파이썬 초격차

패스트캠퍼스 환급챌린지 33일차 미션 (3월 4일) : 파이썬으로 할 수 있는 모든 것 with 47개 프로젝트 초격차 패키지 수강 후기

by 쿠키토끼 2024. 3. 4.

01. 제목

패스트캠퍼스 환급챌린지 33일차 미션 (3월 4일) : 
파이썬으로 할 수 있는 모든 것 with 47개 프로젝트 초격차 패키지 Online 수강 후기
 

02. 포스팅 본문 (학습 일기) 가이드

 
1. 학습 인증샷 2장 이상 포함

카메라로 직접 촬영한 수강 인증 사진 (캡쳐X)

 

2. 학습 후기 700자 이상 (공백 제외)

오늘은 지난 시간에서 CSV에 대한 정의나 왜 쓰이는지 알아본 것을 본격적으로 쇼핑몰 데이터베이스를 만들기 위한 라이브러리 배우기 시간이다.

먼저 데이터 베이스를 연결하는 가장 기본적인 방법은 sqlite3 라이브러리를 이용하는 것이다.

데이터베이스의 종류도 여러가지가 있고 각 각의 데이터베이스가 제공하는 api, 라이브러리가 있긴하지만 파이썬에서 제공하는 내장 표준라이브러리인 sqlite3을 통해 데이터베이스를 연결해보았다.

다른 라이브러리에 비해 가벼워서 개발용 테스트에서나 소규모 프로젝트에서 쓰인다.

sqlite를 따로 설치할 필요는 없으나 데이터를 실제 확인용으로 DB Browser for SQLite gui를 설치하였다.

파이썬 환경에서는 별도의 설치없이 sqlite3 import하고 현재 버전도 확인할 수 있다.

데이터 베이스를 만드는 방법은 변수 = sqlite3.connect('이름.db') 로 설정한다.

테이블 생성하기는 엑셀에서 엑세스 배울때 SQL문 작성할때 많이 보았던 것이라서 친근했다. 

칼럼 이름과 칼럼 타입, 설명 부분의 행 열을 나누어서 설정값을 넣게 된다. PRIMARY KEY는 중복을 허용하지 않는 id 값 같은 곳에 설정값을 넣는다.

커서의 생성은 curs = conn.cursor() 의 형식으로 만들어준다. 커서는 하나의 DB connection에 대하여 독립적으로 SQL 문을 실행할 수 있는 작업환경을 제공하는 객체이다. 하나의 connection에 동시에 한개의 cursor만 생성가능하고 cursor를 통해서 SQL 문을 실행할 수 있다. 반드시 필요하다는 얘기

쿼리문 작성법(SQL 문법)의 예는

query = '''CREATE TABLE test ( ID INTEGER PRIMARY KEY, PRODUCT_NAME TEXT, PRICE INTEGER)'''

curs.execute(query) 로 커서를 놓는다(?)는 개념으로 써주면 된다.

엑세스할때도 조금 복잡했는데 당시에는 재미있다고 느꼈는데 별도로 엑세스 공부하면서 다시 배우면 이해가 더 잘될 것 같다. 이렇게 sql 데이터를 만들고 데이터를 불러오고 조회하는 방법은 fetchone(), fetchmany(), fetchall() 3가지 방법이 있다. 패치원은 조회 결과에서 1개의 row를 가져오고, 패치매니는 지정한 사이즈만큼 row를 가져오고, 패치올은 모든 row를 가져온다. SELECT문을 사용한 조회 결과에서 실제 가져오는 row 수만큼이 3개의 패치문에서 나누어진다.

먼저 DB 연결을 해주고 (import sqlite3, import pandas as pd)-판다스도 보기 편하게 하기 위해서 필요함

샘플용 DB 파일 하나를 커넥트 시키고(conn = sqlite3.connect("sample.db") -> 커서 생성 (c = conn.cursor()) -> 전체 테이블 확인용으로 현황 조회 (c.execute('''SELECT * FROM sqlite_master WHERE type="table"''')-(셀럭트문 사용해서 와일드카드 문자(*) sqlite_master: 데이터베이스가 가진 전체 현황이 조회 되고 타입이 테이블 형태만 가져오라)

이렇게 하고 결과를 출력하면 보기가 어렵기 때문에 pandas 데이터프레임 으로 테이블로 보기 쉽게 만들 수 있다.

여기서 데이터 전체 조회는 c.execute('''SELECT * FROM 테이블명''') 하고

전체 로우 선택은 pd.DataFrame(c.fetchall())하게 되면 원하는 테이블 전체가 나오게 된다.

1개 로우는 pd.DataFrame(c.fetchone())을 하면 되긴 하는데 위에서 이미 fetchall을 했기 때문에 다시 select문을 다시 실행시켜서 패치원을 실행하면 첫번째 값이 얻어지게 된다.

저장 로우 선택은 pd.DataFrame(c.fetchmany(size=3)) 으로 3개 선택해서 나오게 된다. 단 여기서도 패치의 개념처럼 위에 셀렉트된 1개의 로우가 실행되었다면 이어서 패치를 돌리게 되면 위의 1개로우의 다음 선택 패치 값들이 3개 나오게 된다. 만약에 젤 처음부터 3개를 원한다면 역시나 셀렉트문을 다시 실행시키면 된다.

특정 데이터를 조회할 때는 칼럼(키) 확인을 하고

cur = c.execute('''SELECT * FROM Parks''')

cur.description 해서 컬럼확인가능하다.

그리고 특정한 조건의 row만 가져오려면 

c.execute('''SELECT * FROM Parks WHERE state = ?''', ('NY',)) 웨어문 써서 물음표 사용해서 콤마 튜플안에 물음표 안에 있는 것을 써주면 된다. 물음표는 하나이긴 하지만 두 개 이상의 인자를 받게 되어 있어서 튜플안에 콤마를 꼭 써준다.

pd.DataFrame(c.fetchall()) 

마지막으로 DB 연결해제는 conn.close() 해주면 된다. 여러곳에서 연결하고 해제 close를 안해주면 데이터베이스의 실행이나 여러문제로 오류발생이 되기 때문에 꼭 작업 후에는 항상 해제해주는 습관이 필요하다.

 

 

03. 필수 본문 내용 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
 

04. 필수 해시태그 

#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완

05. 필수 URL 

https://bit.ly/48sS29N

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

[수강 강의 클립] 

-Ch05. [데이터베이스] 쇼핑몰 데이터베이스 만들기

03. 데이터베이스 연결 - sqlite3

04. 데이터 불러오기, 조회하기 - fetchone, fetchall

 

[※ 기타사항메모 ※]
{100% 환급챌린지 미션 가이드 참조 : 

https://fastcampus.co.kr/event_online_challenge_2401_mission}

 

커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스

성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.

fastcampus.co.kr