์ด๊ธฐ DB ๋ฐ์ดํฐ
( recipes/2 ) ์ฆ, id = 2์ธ ๋ฐ์ดํฐ๋ฅผ ์๋์ ๊ฐ์ด ์์ ํ๋ ค๊ณ ํ๋ค.
Body ๋ฅผ ํด๋ฆญํ๊ณ raw(๋ ๊ฒ์ ๋ฐ์ดํฐ)์์ ๋ฐ์ดํฐ๋ฅผ Jsonํ์์ผ๋ก ๋ฃ์ด์ฃผ์๋ค.
DB์ postman์ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ์ ์๋ ๊ธ์ ์ฐธ๊ณ ํ๋ค
https://codebunny99.tistory.com/87
MySQL DB ์ค๊ณ, ์ฐ๋ํ์ฌ RestFul API๋ก GETํ๊ธฐ(DB์ ์๋ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๋ API)
Postman GET์ Request๋ Query String(Query Parameters)์ ์ฌ์ฉํ๋ค- offset : 0- limit : 25 DB ์ค๊ณํ๊ธฐ ์ฝ๋ ์ ๋ ฅํ๊ณ ์คํํ๊ธฐ (๋น๋ฐ๋ฒํธ ๋ถ๋ถ ์์ ํด์ ์ ๋ ฅํ๋ค)-- recipe_db ์๋ง ์ ์ฉ์ผ๋ก ์ ์ํ ์
codebunny99.tistory.com
VSCode
app.py ์์ฑํ๊ธฐ
<int : recipe_id> ์ด๋ ๊ฒ ์์ฑํ๋ ๊ฒ์ Flask(ํ๋ผ์คํฌ) ๋ผ๊ณ ํ๋ค
Flask๋ Python์ผ๋ก ์์ฑ๋ ๊ฒฝ๋ ์น ํ๋ ์์ํฌ๋ก, ๊ฐ๋จํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ API๋ฅผ ์ ์ํ๊ฒ ๊ตฌ์ถํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. Flask์์๋ URL ๊ฒฝ๋ก๋ฅผ ๋ผ์ฐํธ(route)๋ผ๊ณ ํ๋ฉฐ, ํน์ ๊ฒฝ๋ก๋ก ์ ๊ทผํ์ ๋ ์คํ๋ ํจ์๋ฅผ ์ ์ํ ์ ์๋ค.
recipe.py ์์ฑํ๊ธฐ
from flask import request
from flask_restful import Resource
from mysql_connection import get_connection
from mysql.connector import Error
class RecipeResource(Resource):
def put(self, recipe_id):
# 1. ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์จ๋ค
print(recipe_id)
data = request.get_json() # ์๋ record ์์ ์ฐ์ธ๋ค
# 2. DB์ ์์ ํ๋ค.
try :
connection = get_connection()
query = '''update recipe
set name = %s,
description = %s,
num_of_servings = %s ,
cook_time = %s ,
directions = %s
where id = %s;'''
record = (data['name'],
data['description'],
data['num_of_servings'],
data['cook_time'],
data['directions'],
recipe_id)
cursor = connection.cursor()
cursor.execute(query, record)
connection.commit() #commitํ์ง ์์ผ๋ฉด DB์ ๋ฐ์๋์ง ์๊ณ rollback๋๋ค
cursor.close()
connection.close()
except Error as e:
if cursor is not None: # null์ด ์๋๋ฉด
cursor.close()
if connection is not None:
connection.close()
return {'result': 'fail', 'error': str(e)}, 500 # 500 ์๋ฌ
return {'result': 'success'}
ํ์ผ์ ์ ์ฅํ์ฌ vscode ํฐ๋ฏธ๋ cmd ์ฐฝ์ flask run ํ๊ณ ,
send๋ฅผ ๋๋ฅด๋ฉด "result" : "success" ๋ผ๊ณ ๋ฌ๋ค.
DB์์๋ ๋ด์ฉ์ด ๋ฐ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค.