정리 노트

7일 차(2022/07/12) 본문

[TIL]국민대X프로그래머스 여름방학 인공지능 과정

7일 차(2022/07/12)

꿈만 꾸는 학부생 2022. 7. 12. 20:54
728x90

오늘은 Flask를 이용해 REST API를 작성해보는 방법과 sqlite3을 이용해 flask와 DB를 연동시키는 방법을 배웠습니다.

Flask로 REST API 작성하기

아래의 코드로 먼저 Flask application을 하나 선언합니다.

from flask import Flask, jsonify, request

app = Flask(__name__)

if __name__ == "__main__":
    app.run()

그리고 각 HTTP 메서드마다 실행될 함수들을 선언합니다.

@app.route('<resource_route>')
def get():
    # GET 메서드가 호출될 때 할 일들을 작성
    
@app.route('<resource_route>')
def create():
    # POST 메서드가 호출될 때 할 일들을 작성
    
@app.route('<resource_route>')
def update():
    # PUT 메서드가 호출될 때 할 일들을 작성
    
@app.route('<resource_route>')
def delete():
    # DELETE 메서드가 호출될 때 할 일들을 작성

'@app.route()'는 데코레이터로 반복되게 작성될 함수를 데코레이터로 정의해 간단하게 표현할 수 있게 해 줍니다. 여기서는 app.route() 함수가 데코레이터로 작성되어 코딩의 편리성을 제공합니다.

 

클라이언트의 JSON을 가져오기 위해 request를 이용합니다.

request_data = request.get_json()
print(request_data["id"])

데이터를 클라이언트에게 JSON 형식으로 전달하기 위해 jsonify를 사용합니다.

@app.route('<source route>')
def do_something():
    response_data = {
        "id": 0,
        "content": "Hello World!"
    }
    return jsonify(response_data)

Sqlite와 Flask 연동하기

파이썬에서 제공하고있는 sqlite를 사용하기 위해 import 해옵니다.

from flask import Flask
import sqlite3

app = Flask(__name__)

db 파일과 연결해줄 Connection 객체를 얻어온 후, Cursor 객체를 얻어서 SQL문을 실행할 준비를 합니다.

app = Flask(__name__)
conn = sqlite3.connect('<db 파일 이름>', check_same_thread=False)
cur = conn.cursor()

여기서 check_same_thread 값을 False로 지정한 이유는 아래의 사이트에서 잘 설명이 되어있습니다.

https://stackoverflow.com/questions/48218065/programmingerror-sqlite-objects-created-in-a-thread-can-only-be-used-in-that-sa

 

ProgrammingError: SQLite objects created in a thread can only be used in that same thread

i'm fairly new to programming. I've tried MySQL before, but now it's my first time using SQLite in a python flask website. So maybe I'm using MySQL syntax instead of SQLite, but I can't seem t...

stackoverflow.com

간단하게 얘기하자면, Connection 객체를 여러 thread에서 사용할 수 있게 하기 위해서 False로 지정한다고 합니다.

이는 app.py의 thread와 다른 thread를 사용한다고 볼 수 있습니다.

 

이제 Cursor 객체를 이용해 SQL문을 실행할 수 있습니다. 그리고 Connection 객체의 commit 함수로 변경 사항이 DB에 저장되게 합니다.

cur.execute('<SQL 코드>')
conn.commit()
728x90

'[TIL]국민대X프로그래머스 여름방학 인공지능 과정' 카테고리의 다른 글

9일 차(2022/07/14)  (0) 2022.07.15
8일 차(2022/07/13)  (0) 2022.07.14
6일 차(2022/07/11)  (0) 2022.07.12
5일 차(2022/07/08)  (0) 2022.07.08
4일 차(2022/07/07)  (0) 2022.07.07