flask{get/post}, SQL{table}

김치성·2022년 3월 31일
0

학습내용

  1. flask 에서 get, post 이해
  2. SQL lite3을 이용한 DB 테이블 구축

1. flask에서 get, post 이해

기본적으로 GET은 읽는 것 POST는 쓰는 것
form 태그에서 속성 값 method를 post로 변경해서 post 방식으로 form을 전송 가능하다.
속성 값 디폴트는 get이다.
요청을 받는 쪽인 flask route에서도 역시 http method를 get 혹은 post로 변경 하여야 한다.

<form action="/create_process/" method="POST">
      <p><input type ="text" name="title" placeholder = "title"></p>
      <p><textarea name = "body" placeholder = "body"></textarea></p>
      <p><input type = "submit" value = "create"></p>
    </form>

form 에서 submit으로 post 방식으로 값을 보내면 action에서 실행할 주소를 라우팅 하는 쪽에서도 post로 라우팅을 할 수 있게 지정을 하지 않으면 'method not allowed'라는 에러가 발생한다.

@app.route('/create_process/', methods=['POST'])
def create_process():
    return 'Success!'

flask에서 post 방식으로 라우팅 하였을때 form에 입력된 값을 사용하기 위해 request를 사용하여야 한다.

flask 패키지에서 request, redirect 등을 사용하려면

from flask import Flask, request, redirect

를 사용하여 처음에 import 하여야한다.

@app.route('/create_process/', methods=['POST'])
def create_process():
  global nextId
  title = request.form['title']
  body = request.form['body']
  newTopic = {"id":nextId, "title":title, "body":body}
  topics.append(newTopic)
  nextId = nextId + 1
  return redirect(f'/read/{nextId-1}/')

@app.route('/delete/<int:id>/', methods = ['POST'])
def delete(id):
  for topic in topics:
    if topic['id'] == id:
      topics.remove(topic)
      break;
  return redirect('/')

응용하여 다음과 같이 form 으로 받은 값으로 topic에 추가하고 제거하는 기능 구현을 하였다.

오류
flask route에서 변수 주소 값 마지막에 '/'를 적지 않으니 에러가 발생하였다.

@app.route('/delete/<int:id>/', methods = ['POST']) ## 정상
@app.route('/delete/<int:id>', methods = ['POST'])  ## 에러

2. SQL lite3을 이용한 DB 테이블 구축

https://sqlitestudio.pl/
위 사이트에서 다운로드 하고 압축을 풀고 설치 파일을 실행한다.
설치가 완료되면 SQL lite studio를 사용할 수 있다.

add database 에서 DB를 만들고 그안에 table을 만들고 column 을 만들고 하는 식으로 DB를 구축한다.

테이블 구축 순서
1. Tables 항목안에 table들이 저장되는데 우클릭 후 create a table을 선택하면 테이블 생성 화면이 나타난다.
2. 테이블 이름을 넣고 add column 버튼을 눌러 항목들을 생성한다.
(primary key, not null 등의 설정 가능)
3. 생성후 새로고침을 하면 끝
4. DDL 탭에서 커맨트 창에서 sql 문 으로 테이블을 생성하기 위한 명령어를 확인할 수 있다.

CREATE TABLE topics (
    id    INTEGER PRIMARY KEY,
    title TEXT    NOT NULL,
    body  TEXT
);

오늘 생성한 테이블은 위와 같다.
이를 터미널에서 동일하게 작성하면 동일한 테이블이 생성된다.

INSERT INTO topics (title, body) VALUES ("hello", "world")

생성된 테이블에 데이터를 추가할 경우에는 위와 같은 쿼리문으로 데이터를 추가 할 수있다.
이때, id는 primary key 값이기 때문에 생락하여도 자동으로 번호가 순차적으로 부여된다.

profile
디지털백수

0개의 댓글