[내배캠 AI코스] TIL

내일배움캠프 5일차 TIL - Database

띵제 2024. 2. 19. 21:32

오늘 들은 강의 : Chat GPT 3주차 숙제해설, Chat GPT 4주차, TIL특강, 웹개발 특강

 

7강. Database(DB) 개괄

 

1) database를 쓰는 이유 ; Index라는 순서로 데이터들이 정렬되어 있어 꺼내쓰기 쉽다

2) Database의 두가지 종류

 

- RDBMS(SQL) ; SQlite, MS-SQL, My-SQL 등

행,열의 모양이 엑셀과 비슷함. 정형화되어있는 만큼 데이터의 일관성이 높고 분석에 용이하다

 

- No-SQL ; MongoDB

딕셔너리 형태로 데이터를 저장하기 때문에 값들이 다 같을 필요가 없음. 형태가 자유롭다.

일관성은 부족하지만 변화에 대응하기가 좋다보니 스타트업에서 많이 사용한다.

 

3) Database의 실체..?

- 데이터베이스는 일반적으로 파일로 저장됨. 엑셀파일을 열어보기 위한 RDBMS 프로그램 설치.

희안한 비유를 들어놔서 더 헷갈리게 하네.

데이터베이스와 RDBMS라고 한다.

 

- 우리는 SQLite를 사용한다. VS코드에서 SQLite3 Editor를 설치해서 사용.

 

설치하고 database.db 파일을 생성해주면 아래와 같이 뭔가 만들어져있다.

 

 

이건 환경설정만 해주는 용이라고 한다. database.db 파일에 마우스를 대고 우클릭, 연결프로그램 누르면

위쪽에(명령팔레트인가?) SQLite3 Editor가 나옴. 

거기에서 맨 마지막 줄, *.db에 대한 기본 편집기 구성을 클릭, 그리고 첫번째 SQLite3 Editor 클릭.

 

 

이러면 세팅이 끝남. 창 닫고 다시 파일 삭제하면 됨. 창 안 닫으면 삭제 안됨.

 

 

8강 SQLite 시작하기

 

1) SQLite란, 작지만 빠르고 탄탄해서 제일 많이 사용됨. 

파이썬에는 기본적으로 내장되어 있어 별도 설치가 필요하지 않음.

원래는 이런 데이터베이스에서 데이터를 다룰려면 SQL을 사용해야 하지만 ORM을 통해 쉽게 다룰 수가 있다.

ORM은 프로그래밍 언어로 데이터베이스를 다루는 방법.

 

2)SQL Alchemy

 

셋팅을 위해 먼저 파이썬 가상환경 만들어주고,

터미널에 $ pip install Flask-SQLAlchemy 입력, 라이브러리 설치 완료!

 

app.py에 SQLAlchemy 코드스니펫과 테이블 생성코드 스니펫을 차례대로 복붙해준다.

 

테이블 생성코드 스니펫 = 설계도

Class Song이라고 되어 있기에 Song이라는 시트가 생성됨.

이 설계도를 바탕으로 Database를 만들어보자.

 

터미널에 $ flask shell 입력해주고나서 아래의 명령어도 입력해준다.

 

>>> from app import db, Song 

>>> db.create_all()

 

이제 database.db파일에 가보면,

 

성공!

 

*참고*

테이블 만들때는 db.create_all()

테이블을 없애고 싶다면 db.drop_all()

 

 

9강 SQLAlchemy로 Database 조작하기

 

 

터미널에 Flask shell과 밑에 >>> 표시가 있는 것을 확인하고

오른쪽 마우스 클릭, 붙여넣기로 코드스니펫(데이터들이 들어가있음)을 붙여준다. 그리고 엔터를 치면 아래와 같이..

 

코드 스니펫 값이 들어가 있는 것을 확인할 수 있다. 작동 원리는

 

add는 DB에 업로드, commit은 DB에 저장. commit 저장 안하면 날라간다.

 

여러 데이터를 넣는 방법도 알아보자.

코드스니펫(데이터 값 들어있음) 똑같이 복붙하고 엔터를 치면,

 

 

요 데이터들이 위의 표에

 

이렇게 예쁘게 들어가지는 걸 확인할 수 있다.

 

song1 = Song(username="추천자", title="노래제목1", 

            artist="가수1", image_url="이미지 주소1")

 

song2 = Song(username="스파르타", title="노래제목2", 

            artist="가수2", image_url="이미지 주소2")

 

song3 = Song(username="스파르타", title="노래제목3", 

            artist="가수3", image_url="이미지 주소3")

——> song1~3 데이터 3개를 한번에 만들고

db.session.add(song1)

db.session.add(song2)

db.session.add(song3)

——> 3개 한꺼번에 업로드 하고

db.session.commit()

——> 그리고 한번에 저장

 

데이터 조회해보기

>>> Song.query.all() 치고 엔터,

그럼 이렇게 리스트 형태로 모든 데이터들이 쭉 나오는 것 확인 가능!

 

>>> song_list = Song.query.all()

>>> song_list[0]

 이렇게 조회하면, ‘가수 노래제목 추천 BY 추천자’ 라는 데이터값이 조회된다.

 list 값과 똑같이 확인이 가능하다.

 

>>> song_list[0].title 로 조회하면

‘노래제목’ 값만 확인이 된다.

 

 

만약, 특정 조건으로 데이터를 조회하려면 어떻게 해야할까?

 

>>> Song.query.filter_by(여기에 특정 조건 넣어줌)

 

>>> Song.query.filter_by(username=‘추천자’).all()

 .all() 특정 조건에 걸리는 데이터 전부 조회

 

위 표 안에서 유저 이름이 ‘추천자’인 모든 데이터가 조회되는 것을 확인할 수 있다.

 

>>> Song.query.filter_by(id=3).first() 

 .first()  데이터를 하나만 들고 올 때

 

데이터를 바꾸려면,

song_data = Song.query.filter_by(id=4).first()

->데이터를 하나 가져오고 아이디가 4번인거 가져온 다음에 song_data에 넣음

 

song_data.title= ‘변경된 제목’ 엔터!

db.session.add(song_data)

db.session.commit()   -> commit은 저장

 

위 내용들을 이렇게 차례대로 입력을 해주면

 

 

“노래제목3” 에서 “변경된 제목” 으로 데이터가 바뀐 것을 확인할 수 있다.

 

마지막으로 데이터를 삭제하는 법도 해보자.

 

delete_data = Song.query.filter_by(id=3).first()   세번째 데이터를 들고 온 다음에,

 

db.session.delete(삭제할 데이터)   삭제해주고

db.session.delete(delete_data)

 

db.session.commit()   저장! 엔터를 치는 순간,

 

위의 표를 보면 3번 유저가 사라진 것을 확인할 수 있다.

 

위와 같은 방법들로 파이썬을 통해 데이터베이스를 조작할 수 있다!

::오늘의 회고::

오늘은 남은 강의를 마저 듣고 파이썬으로 넘어가.. 야 했는데 그러지 못했다ㅠ

튜터님 말처럼 후루룩 보고 넘기려고 했는데 후루룩이 안됐기 때문이다.

미리 조금이라도 이해해두지 않으면 나중에 엄청나게 헤멜것만 같았다.

혼자 헤메는 거라면 모르겠지만 나중에 팀원들한테 해를 끼칠지도 모르니까..

강의 진도가 빠르지 않은 만큼 주말이나 저녁 시간을 더 할애해야겠다.