반응형
< Python MySQL Connector 인서트 하는 방법 >
# 이제 DB 생성 및 가상환경 생성 그리고 실행에 필요한 프로그램들인 MySQL Workbench, Postman, Visual Studio Code 실행 및 세팅이 완료되었으니, API를 직접 코딩해 보자!
# 포스트맨을 실행시켜 POST로 설정하고, URL 입력!
- Body에 raw 선택 JSON 형식으로 DB에 추가하고 싶은 정보를 입력해준다.
# VSCode에서 API 코드를 작성!
- 작업의 용이성(실무적으로)을 위해 각 기능이 동작하는 API 코드를 작성할 파일들은 resource라는 폴더를 따로 생성하여 그안에서 작성
# recipe.py 파일 안에 레시피를 생성(insert) 하는 코드문 작성
- query 문을 만들때는 꼭! MySQl Workbench로 실제 해당 문구가 정상 실행되는지를 먼저 테스트해 보고 그다음에 복사 붙여넣기하여 사용
from flask import request
from flask_restful import Resource
from mysql_connection import get_connection
from mysql.connector import Error
# 클래스를 우선 생성!
class RecipeListResource(Resource) :
# 레시피를 생성하는 API
def post(self) :
# 1. 클라이언트가 보내준 데이터가 있으면
# 그 데이터를 받아준다.
data = request.get_json()
# 2. 이 정보를 DB에 저장한다. (MySQL 커넥터를 사용하는 순서)
try :
### 1. DB에 연결
connection = get_connection()
### 2. 쿼리문 만들기
# 꼭 작성전에 MySQL Workbench에서 직접 실행을 해본뒤 그대로 복사해서 사용해주자!
# values() 안에는 클라이언트가 입력할 값을 그대로 매칭해서 받을때는 %s 로 작성해준다. 이부분만 수정!
query = '''insert into recipe
(user_id, name, description, num_of_servings, cook_time, directions)
values
( %s, %s, %s, %s, %s, %s );'''
### 3. 쿼리에 매칭되는 변수 처리 => 튜플로!!
record = (user_id, data['name'], data['description'], data['num_of_servings'], data['cook_time'], data['directions'])
### 4. 커서를 가져온다.
cursor = connection.cursor()
### 5. 쿼리문을 커서로 실행한다.
cursor.execute(query, record)
### 6. DB에 완전히 반영하기 위해서는 commit 한다.
connection.commit()
### 7. 자원 해제
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
return {'result' : 'success'}, 200
# 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
from config import Config
app = Flask(__name__)
api = Api(app)
# 경로(path)와 리소스(API 코드)를 연결한다.
# <int> flask 문법임 외워야됨
# ( 생성하였던 클래스명 , 경로)
api.add_resource( RecipeListResource , '/recipes')
if __name__ == '__main__' :
app.run()
# 완료 되었으면 서버 실행 후 postman을 실행하여 테스트!
ㄴ 이렇게 success 뜨면 잘 동작된것!
# 실제로 데이터가 삽입되었는지 MySQL Workbench 에서 확인!
select * from recipe;
ㄴ 여러번 실행하여서 데이터가조금 많은데 실제로 한번만 실행하였으면 데이터가 한개만 있어야함!
다음 게시글로 계속~!
728x90
반응형