본문 바로가기

RestfulAPI

Restful Python 에서 MySQL 에 데이터 인서트 하는 방법

현재 selet * from recipe; 했을 때의 테이블 데이터 상태이다 여기서 데이터 하나 인서트 해보겠다.

POST를 설정해서 create 즉 데이터를 insert 해줄 것을 서버에게 요청해주고 경로에 맞게 요청해준다.

Body 부분에 들어가서 각 컬럼에 맞게 요청해주면 된다.

요청이 잘되면 석세스라는 문구가 뜬다.

인서트가 잘 된 것을 볼 수 있다.

코드 작성

from flask import request
from flask_restful import Resource
from myspl_connection import get_connection
from mysql.connector import Error

class RecipeListResource(Resource) :

    # API를 처리하는 함수 개발
    # HTTP Method를 보고 똑같이 만들어준다

    def post(self) : 
        
        # 1. 클라이언트가 보내준 데이터가 있으면 그 데이터를 받아준다
        data = request.get_json()

        # 2. 이 레시피 정보를 DB에 저장해야한다
        try :
            # DB에 연결
            connection = get_connection()

            # 쿼리문 만들기
            query = '''insert into recipe(name, description, num_of_servings, cook_time, directions)
                    values(%s, %s, %s, %s, %s);'''

            # 쿼리에 매칭되는 변수 처리해주기(튜플로)
            record = (data['name'], data['description'], data['num_of_servings'],
            data['cook_time'], data['directions'])

            # 커서를 가져온다
            cursor = connection.cursor()

            # 쿼리문을 커서로 실행한다
            cursor.execute(query, record)

            # 커밋해줘야 DB에 완전히 반영된다
            connection.commit()

            # 자원 해제
            cursor.close()
            connection.close()

        except Error as e :
            print(e)
            cursor.close()
            connection.close()

            return {"result" : "fail", "error" : str(e)}, 500

        # API를 끝낼때는 클라이언트에 보내줄 정보(json)와 http 상태코드를 리턴한다(보내준다)
        return {"result" : "success"}, 200