import mysql.connector
def get_connection() :
connection = mysql.connector.connect(
host = "AWS RDS의 엔드포인트",
database = "해당 스키마(데이터베이스)",
user = "MySQL 유저 이름",
password = "해당 유저 비밀번호"
)
return connection
-> 먼저, mysql.connector를 import 해준 후 파이썬으로 MySQL에 접속할 수 있게 만들어준다.
- Postman 실행
- http method를 POST로 설정
- URL 입력
- 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에서도 적용이 잘 됐는지 확인한다.
'Restful API' 카테고리의 다른 글
[Restful API] TypeError: Object of type ... is not JSON serializable 에러가 발생한 이유와 해결 방법 (1) | 2023.12.06 |
---|---|
[Restful API] Python MySQL Connector를 이용해 select 하는 방법 (1) | 2023.12.06 |
[Restful API] python flask에서 Resource 클래스를 이용한 API 서버 개발 (1) | 2023.12.05 |
[Restful API] 포스트맨(Postman) 설치 방법, 세팅 방법 (1) | 2023.12.05 |
[Restful API] python flask app.py 코드 설명 (1) | 2023.12.05 |