본문 바로가기
Restful API

[Restful API] Python MySQL Connector를 이용해 insert 하는 방법

by dong_su 2023. 12. 6.
import mysql.connector

def get_connection() :
    connection = mysql.connector.connect(
        host = "AWS RDS의 엔드포인트",
        database = "해당 스키마(데이터베이스)",
        user = "MySQL 유저 이름",
        password = "해당 유저 비밀번호"
    )

    return connection

-> 먼저, mysql.connector를 import 해준 후 파이썬으로 MySQL에 접속할 수 있게 만들어준다. 


  1. Postman 실행
  2. http method를 POST로 설정
  3. URL 입력
  4. Body에 insert할 데이터를 json 형식으로 입력해준다.


from flask import request
from flask_restful import Resource
from mysql_connection import get_connection
from mysql.connector import Error
from datetime import datetime

# resources 폴더 안에 만드는 파일에는 API를 만들기 위한 클래스를 작성한다.
# API를 만들기 위해서는 flask_restful 라이브러리의 Resource 클래스를 상속해야한다.

class RecipeListResource(Resource) :

    # http Method와 동일한 함수명으로 오버라이딩!
    def post(self) :
        
        # 1. 클라이언트가 보내준 데이터가 있으면 그 데이터를 먼저 받아준다.
        data = request.get_json()
        
        # 2. 받아온 레시피 데이터를 DB에 저장해야 한다.

        try :
            # 2-1 db에 연결하는 코드
            connection = get_connection()

            # 2-2 쿼리문 만들기 - insert 쿼리만들기
            query = '''insert into recipe
                        (name, description, num_of_servings, cook_time, directions)
                        values
                        (%s, %s, %s, %s, %s);
                    '''
            
            # 2-3 위의 쿼리에 매칭되는 변수를 처리해 준다.
            # 단 라이브러리 특성상 튜플로 만들어야 한다.
            record = (data["name"], data["description"], data["num_of_servings"],
                      data["cook_time"], data["directions"])
            
            # 2-4 커서를 가져온다.
            cursor = connection.cursor()

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

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

            # 2-7 자원해제
            cursor.close()
            connection.close()

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

            # 유저한테 알려줘야 한다.
            return {"result" : "fail", "error" : str(e)}, 500

        # 3. DB에 잘 저장됐으면 클라이언트에게 응답해준다.
        # 보내줄 정보(json)와 http 상태코드를 return한다.

        return {"result" : "success"}, 200

 -> insert를 하기 위한 코드 작성 - 파일 저장 - 터미널에 flask run으로 실행 - Postman에서 Send 버튼 클릭

 

-> status code 200 나온다면 정상적으로 작동 됐다는 뜻이다.

 

-> DB에서도 적용이 잘 됐는지 확인한다.