4.1 개발일지. DB2

김지형·2022년 4월 1일
0

ai-school

목록 보기
8/61

학습한 내용

DB 생성 및 설정하기

Glitch의 터미널 창을 열고, sqlite3를 실행한다
db.sqlite3파일을 작성한다
위 코드(사전형 정보)를 커맨드 라인으로 표로 만들어 볼 것이다
표 이름을 지정하고
표의 정보를 입력한다
그리고 표의 정보(행)를 입력한다
데이터를 읽을때는 데이터를 선택한다는 뜻인
'SELECT * FROM (테이블 이름)' 을 명령하면 표에 입력된 정보를 확인 할 수 있다
sl -l을 명령하면 파일을 상세히 확인 할 수 있다

차일을 확인한 후, read.py라는 파일을 하나 만들어 코드를 새로 작성한다

  • connect는 sqlite3에 접속하(고, 'db.sqlite3'라는 파일을 여)는 태그다
  • cursor은 정보를 하나하나 짚어가며 읽어가는 커서를 만드는 태그다
  • execute는 (topics의 데이터를 모두 가져오고) 가져온 정보의 첫번째에 커서를 놓는 (읽을 준비를 하는) 태그이다
  • fetchall은 커서가 가리키면서 읽어가는 모든 정보를 불러오는 태그다
    태그를 설정하고, 앞에 이름을 붙여준다
    코딩을 다 하고, 터미널 창에서 'puthon3 read.py'를 명령하면,
    'db.sqlite3' 데이터베이스의 topic 테이블 안에 있는 모든 행을 불러오고(print),
    0번째 원소(번호)와 1번째 원소(title)를 확인할 수 있다(for in)

Flask에서 코드로 표에 행 추가하기


read.py의 코드를 복사해서 create.py파일을 만든다
title과 body값을 입력할수 있도록 코딩한다
입력받은 title과 body값을 topics에 넣도록 코딩한다(id는 자동으로 추가되기 때문에 비워둔다)
?로 비워둔 VALUE값을 채울수 있도록 코딩한다
생성이나 삽입 등 수정작업을 하고 나면, commit을 해야한다
작업이 다 끝나면 close로 sqlite3를 실행 종료하게 한다

코딩을 다 끝내고 터미널 창에서 구동시키고, title과 body값을 입력하면

행이 추가된다

그리고 제대로 반영이 되었는지 아까 작성한 read코드를 이용해 확인해본다
자동적으로 읽기 작업을 하도록 코딩할 수 있다

사전형 정보를 DB로 전환

이번에는 topics의 사전형 정보를 DB로 전환하는 작업을 해본다
위의 사전형 정보를 DB로 전환하면, 정보를 영구적으로 저장할 수 있다는 장점이 있다
먼저 Flask가 sqlite3를 사용할 수 있도록 설정한다
그 후, sqlite3의 구동에 필요한 코드를 입력한다(접속, 커서 설정, 읽을 정보 범위 지정, 정보 불러오기)
그리고 위 topics의 id(0번째)와 title(1번째)이 출력되도록 코딩해준다
확인해보면 id와 title은 제대로 출력 되지만, 내용이 수정되지 않았다
위의 topics정보를 불러왔기 때문인데, 여기서 DB를 불러오도록 수정해줘야 한다

read함수에서 마찬가지로 기본 코드를 입력한다(접속, 커서 설정, 범위 지정, 정보 불러오기)

다만, 여기서는 각 id의 전체가 아닌, 특정한 정보(OOO is...)만을 필요로 하기 때문에
'WHERE id=?'로 id값을 비워두고, 뒤에 (id,)로 비워둔 id값을 채워준다
그리고 한 건의 정보만 불러올때는 'fetchall' 이 아닌, 'fetchone' 태그를 사용한다
title은 topic의 title(1번 정보), body는 topic의 body(2번 정보)라고 지정해주면
위 코드는 필요 없어지므로, 지워준다
그리고 결과를 확인한다

쓰기 기능 구현

위 상태에서 create로 새로운 목록을 추가하려고 하면 오류가 뜬다
그래서 쓰기 기능을 다시 구현해준다위 코드를 지우고 새로 작성한다
역시, 기본 코드를 입력해준다(접속, 커서 설정, 범위 지정)
POST방식으로 설정했을 때, 브라우저가 전송한 데이터를 받는 태그는 request.form이다
받는 정보로 title과 body를 입력해준다

commit(수정, 생성, 삭제 작업)을 추가한다

create에서는 값을 새로 추가하게 되는데, 행의 id값이 뭔지 알아낼 수 없다
그래서 DB에게 마지막으로 추가된 행의 ID(PRIMARY)값이 뭔지 물어보는 작업이 필요하다
이 때, 커서에게 lastlowid를 물어보는 방법을 쓸 수 있다
그리고 역시 close로 작업을 끝내게 해준다

코드를 다 입력하고 새로운 목록을 추가해본다

삭제 기능 구현

쓰기 기능과 마찬가지로, 삭제 기능 또한 수정이 되어있지 않기 때문에 수정을 해주어야 정상적으로 작동한다
쓰기 기능 구현에서 작성한 코드를 그대로 붙여준다
삭제 기능에서 수정할 부분은 execute인데, 삭제와 업데이트를 코딩할때는 WHERE문을 꼭 입력해주어야 한다
WHERE문이 없다면, 정보 전체를 설정해버리기 때문에 전체가 지워지는 경우가 생기기 때문이다

필요 없는 코드를 지워준다

쓰기 기능 구현에서 추가한 'sql server'를 지워본다

style

지금까지 직접 만든 웹을 꾸며본다

밑줄치기

https://getbootstrap.com/docs/5.1/getting-started/introduction/
bootstrap 홈페이지를 참조하여 웹페이지 꾸미기

어려운 내용

DB 생성 및 설정할때, 추가한 행에 id가 안나오기도 하고, 행을 추가할때 정상적으로 작동이 되지 않는 등의 어려움이 있었다

해결방법

원하는 결과가 나오지 않을때 항상 오탈자를 먼저 의심하자
타이핑을 잘못한 부분이 있는지
필요한 타이핑이 빠진 부분이 있는지
특히 오늘 자주 틀렸던 부분은 execute를 excute로 적는 실수

학습소감

오늘로 HTML, CSS, JS, Python, Flask, DB까지 대부분의 내용을 학습했다
2주라는 짧은 시간 안에 많은 내용을 배우고, 정리하느라
정신이 없기도 하고 아직 이해가 되지 않는 부분도 많긴 하지만,
코딩을 처음 해보는 입장에서는 정말 쉽고 재밌게 여러가지 언어와 기능 구현 코딩을 배우게 된 시간이었다
물론 앞으로 잊어먹지 않게, 녹화된 강의도 계속 돌려보고 지금까지 배웠던 코딩을 다시 작성해보는 등 복습도 빠지지 않아야 할 것이다

profile
안녕하세요!

0개의 댓글