API 개발/Restful API

Restful API : Python MySQL Connector 업데이트 하는 방법과 코드

신강희 2024. 5. 24. 11:45
반응형

< Python MySQL Connector 업데이트 하는 방법과 코드 >

 

#  SELECT 기능에서 이어서 진행! (참고 : https://sorktjrrb.tistory.com/143)

 

# 레시피를 수정(UPDATE) 하는 API를 만들어 보자

- 우선, 포스트맨을 실행시켜 PUT로 설정하고, URL(업데이트할 id값도 같이 입력) 입력!

- Body에 raw 선택 JSON 형식으로 DB에 추가하고 싶은 정보를 입력해준다.

 

# VSCode에서 API 코드 작성!

- id를 지정하여 가져오는 형태이므로 특정 레시피를 선택했던 class에 이어서 작성

 
from flask import request
from flask_restful import Resource

from mysql_connection import get_connection
from mysql.connector import Error


class RecipeResource(Resource) :
    # 레시피 수정하는 API
    # 수정은 put
    def put(self, recipe_id) :

        # 1. 클라이언트로 부터 데이터를 받아온다.
        print(recipe_id)

        data = request.get_json()

        # 토큰 ID 받기
        user_id = get_jwt_identity()

        # 2. DB 에 수정한다.
        try :
            connection = get_connection()

            # 컬럼과 매칭되는 데이터는 %s로 하면된다.
            query = '''update recipe
                        set name = %s,
                            description = %s,
                            num_of_servings = %s,
                            cook_time = %s,
                            directions = %s
                        where id = %s and user_id = %s;'''
            record = (data['name'],
                      data['description'],
                      data['num_of_servings'],
                      data['cook_time'],
                      data['directions'],
                      recipe_id,
                      user_id)

            cursor = connection.cursor()
            cursor.execute(query, record)

            connection.commit()

            cursor.close()
            connection.close()

        except Error as e:
            if cursor is not None:
                cursor.close()
            if connection is not None:
                connection.close()
            return {'result' : 'fail',
                    'error' : str(e)}, 500

        # 3. 클라이언트에 JSON 리턴한다.

        return {'result' : 'success'}
   

 

# app.py 파일에 경로와 리소스(API 코드)를 연결하는 코드도 작성!

 
# API를 처리하는 코드는
# Resource 클래스를 상속받아서 작성한다.
# 이 클래스에는 get, post, put, delete 함수를 상속받는다.
# 따라서 이 함수들을, 우리의 서비스에 맞게 수정해서 사용하면된다.

from flask import Flask
from flask_restful import Api
 
# 생성한 API class 사용을위해서 생성시마다 import 필요!
from resources.recipe import RecipeListResource, RecipeResource
 
from config import Config
 
app = Flask(__name__)
api = Api(app)

# 경로(path)와 리소스(API 코드)를 연결한다.
# <int> flask 문법임 외워야됨
api.add_resource( RecipeListResource , '/recipes')
api.add_resource( RecipeResource , '/recipes/<int:recipe_id>')

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

 

# 완료 되었으면 서버 실행 cmd > flask run  postman을 실행하여 send!

- 포스트맨에 200 OK가 뜨고 VScode cmd 창에도 결과가 잘 출력되는것 확인!

 

다음 게시글로 계속~!

 

 

728x90
반응형