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

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

by 쿠키토끼 2024. 3. 5.

01. 제목

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

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

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

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

 

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

오늘은 데이터를 연결하고 불러오고 조회한 부분에서 데이터를 추가하고 수정하고 삭제하는 지와 데이터 백업하는 것 까지 배우는 시간이다.

데이터베이스에서 수정하는 것은 쿼리의 기본 구문에서 사용가능하다.

쿼리도 내용이 방대하기 때문에 기본적으로 4가지인 선택, 삽입, 수정, 삭제 부분만 가져다가 쓰기로 한다.

대부분 영어내용이 비슷하기 때문에 어려움은 없기 때문에 편하다.

SELECT는 데이터 선택, INSERT는 데이터 삽입, UPDATE는 데이터 수정(modify가 아닌게 좀 특이하다. 파이썬 문법에서도 대부분 update가 수정으로 쓰였었다) DELETE는 데이터 삭제 쿼리 구문이다.

먼저 데이터 생성 후에 값을 삽입(INSERT)하는 방법 3가지가 있다.

방법1. 열(키) 항목 순서를 정확히 알고 있는 경우

첫번째 열은 id 이고 두번째는 product_name 이고 이런식으로 정확하게 알 경우

c.execute("INSERT INTO test VALUES(1, '모자', 15000)") 이런식으로 순서대로 적어주면 된다.

단, 이때는 conn.commit() 코드를 적어, 커밋을 항상 해주어야 한다. 쿼리문의 변경사항을 반영시켜주기 때문에 커밋을 항상해주는 것을 잊지말자!

방법2. 열(키) 항목 순서를 정확히 모르는 경우

열이 너무 많거나 열 순서를 정확하게 모르는 경우는 열의 항목만 알고 있다는 가정하에

c.execute("INSERT INTO test(PRODUCT_NAME, PRICE, ID) VALUES(?,?,?)",('티셔츠', 20000, 3))

인설트 인투 까지는 같고 뒤에 순서는 모르지만 항목을 나열하고 다음 밸류즈 뒤에 값에 물음표를 항목에 맞게 나열하고 다음에 원하는 값을 나열해준다. 

conn.commit() 마찬가지로 커밋을 항상해줘서 변경사항을 반영해줘야한다. 이렇게 되면 순서를 몰라도 알아서 나열되게 된다. 마치 아기들이 가지고 노는 도형 넣는 상자에 도형을 주고 알맞게 넣어주는 원리인가 싶다.

방법3. 여러 데이터를 한 번에 삽입하고 싶은 경우

이 경우는 더 많이 사용되는데 아무래도 데이터가 적은 경우보단 여러개의 데이터가 있다보니 이 방법이 가장 편할 수 있다. 우선 테이블 내용을 삭제하는

c.execute("DELETE FROM test")

conn.commit() 반영을 해주고

추가할 상품 리스트를 만들어준다. 원하는 레코드를 만들어서 넣어주면 된다.

product_list = [[1, '모자', 15000], [2, '코트', '200000'], [3, '티셔츠', '20000'], [4, '블라우스', '55000]] 이런식으로 리스트 데이터값을 주고, 데이터 여러줄 삽입하는 executemany를 넣는게 특징이다.

이전에는 execute를 넣었다면 여러 줄은 익스큐트매니를 넣는다.

c.executemany("INSERT INTO test(ID, PRODUCT_NAME, PRICE) VALUES(?,?,?)", product_list)

conn.commit()

다음은 데이터 수정(UPDATE)로 여기서도 3가지 수정 방법이 있다.

방법1. 튜플 형태로 수정

c.execute("UPDATE test SET PRODUCT_NAME = ? WHERE ID = ?", ('슬랙스', 6))

프로덕트 네임을 바꾸고 싶고, id가 6의값(6인 지점에)에 슬랙스로 바꾼다라는 의미이다.

conn.commit()

방법2. 딕셔너리 형태로 수정

c.execute("UPDATE test SET PRICE = :price WHERE ID = :id", {"price":55000, "id":6})

콜론뒤에 변수 지정하고 딕셔너리 안에 감싸준다

conn.commit()

방법3. %s 표시자 사용

c.execute("UPDATE test SET PRODUCT_NAME = '%s' WHERE ID = '%s'" % ('트랜치코트', 2))

문자열 표시자를 이용한다. 작은 따옴표 해서 %해서 s하면 문자열이 나오고 해당하는 것을 적어준다

conn.commit()

3가지 중에서 편한 것으로 쓰면 되고 강사님은 첫번째인 튜플이 편하다고 하셨는데 나도 튜플이 편한것같다. 일단 특수문자를 쓰는 부분이 괄호 빼고는 크게 없고 좀 더 직관적이어서 그런듯하다.

데이터 삭제(DELETE)도 3가지 방법이 있다.

방법1. 튜플 형태로 삭제

c.execute("DELETE FROM test WHERE ID = ?", (8,))

아이디가 8인 부분을 삭제한다 하나 일때도 콤마를 반드시 적어줘야한다. 콤마를 안하면 에러가 발생한다.

conn.commit()

방법2. 딕셔너리 형태로 삭제

c.execute("DELETE FROM test WHERE PRODUCT_NAME = :product_name", {'product_name':'슬랙스'})

변수입력하고 슬랙스 해당하는 레코드를 삭제한다.

conn.commit()

방법3. 전체 삭제

c.execute("DELETE FROM test")

conn.commit()

삭제도 마치고 나면 DB연결해제 conn.close() 해준다. 해제해주는 습관 필수!!

이번에는 데이터를 백업하는 부분이다.

실습처럼 간단한 샘플 데이터는 몰라도 실제 운영에서는 크고 복잡하고 데이터와 테이블얽혀있는 데이터베이스가 존재할 것이다. 이처럼 복잡한 데이터를 백업하는 일은 매우 중요하고 필수적인 일이다.

이 처럼 데이터 베이스를 백업할 때 사용하는 모듈은 iterdump로 이터덤프의 결과는 sql 파일이 만들어지고, 이 sql 파일 확장자는 가지고 있는 테이블을 다시 복원할 수 있는 쿼리문을 저장하는 것으로 백업이 진행된다.

iterdump 내용 확인을 먼저하고

for line in conn.iterdump():

     print(line)

이런식으로 sql 쿼리문이 나온다. 레코드 정보까지 저장되어 만들어준다. 테스트 디비의 정보가 날라가고 수정해도 이렇게 백업되어 불러와 복구해준다.

여기서 데이터 베이스 백업 파일 생성하는 코드는

with conn: 

      with open('backup.sql', 'w') as f: # 위의 쿼리를 백업.sql로 저장하고

           for line in conn.iterdump(): # 이터덤프 라인 작성하고

                f.write('%s\n' % line) # 줄바꿈해준다

           print('Completed.')

확인을 위해 테이블 삭제를 해준다.

c.execute("DROP TABLE test")

위에서 데이터 삭제에서 c.execute("DELETE FROM test") 의 딜리트가 아닌 드롭과의 차이는 딜리트의 경우는 해당 테이블의 레코드 값들만 삭제시키는 것이고, 드롭은 아예 테이블까지 삭제해버린다.

이제 여기서 백업하고 싶은 테스트 디비 sql 파일 로딩을 해야한다.

with open('backup.sql', 'r') as sql_file: # 리드 읽기전용으로 백업

      sql_script = sql_file.read()

SQL 스크립트를 실행해본다

c.executescript(sql_script)

conn.commit()

해서 확인하면 삭제된 테이블이 복구된 것을 알 수 있다.

 

03. 필수 본문 내용 

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

04. 필수 해시태그 

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

05. 필수 URL 

https://bit.ly/48sS29N

 

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

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

fastcampus.co.kr

 

[수강 강의 클립] 

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

05. 데이터 삽입, 수정, 삭제

06. 데이터 백업하기 - iterdump

 

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

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

 

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

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

fastcampus.co.kr