Notice
Recent Posts
Recent Comments
Link
뭐야 왜 an 돼
Python MySQL Connector insert 하는 방법 (Flask,Post man) 본문
POST로 설정된 포스트맨에서 URL을 입력하고 raw JSON 형식으로 DB에 추가할 정보를 입력해줍시다

Visual Studio Code에서 다음과 같은 코드를 작성
Recipe API 설명
이 코드는 Flask-RESTful을 사용하여 클라이언트로부터 데이터를 받아 MySQL 데이터베이스에 레시피를 저장하는 API 엔드포인트를 정의한 것입니다. 코드를 단계별로 설명해 드리겠습니다.
코드 설명
1. 필요한 라이브러리 임포트
from flask import request
from flask_restful import Resource
from mysql_connection import get_connection
from mysql.connector import Error
flask: Flask 웹 프레임워크.flask_restful: Flask를 위한 확장 모듈로, RESTful API를 쉽게 만들 수 있도록 돕습니다.get_connection: 데이터베이스 연결을 위한 함수 (외부에서 가져오는 것으로 가정).Error: MySQL 커넥터에서 발생하는 예외 처리 클래스.
2. 클래스 정의
class RecipeListResource(Resource):
Resource 클래스를 상속받아 새로운 리소스를 정의합니다. 이 클래스는 레시피와 관련된 API 엔드포인트를 처리합니다.
3. POST 메소드 정의
def post(self):
HTTP POST 요청을 처리하는 메소드입니다.
4. 클라이언트 데이터 수신
data = request.get_json()
클라이언트가 보낸 JSON 데이터를 받아 data 변수에 저장합니다.
5. 데이터베이스 작업 (try 블록)
try:
# 1. DB에 연결
connection = get_connection()
# 2. 쿼리문 만들기
query = '''insert into recipe
(name, description, num_of_servings, cook_time, directions)
values
(%s, %s, %s, %s, %s);'''
# 3. 쿼리에 매칭되는 변수 처리 => 튜플로
record = (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()
- DB 연결:
get_connection()함수를 호출하여 데이터베이스에 연결합니다. - 쿼리문 작성: 레시피 데이터를 삽입하는 SQL
INSERT쿼리문을 작성합니다. - 쿼리 매개변수 설정: 클라이언트로부터 받은 데이터를 튜플로 변환하여 쿼리문에 매핑합니다.
- 커서 생성: 데이터베이스 작업을 수행할 커서를 생성합니다.
- 쿼리 실행: 커서를 사용하여 쿼리를 실행합니다.
- 트랜잭션 커밋: 변경 사항을 데이터베이스에 영구히 반영합니다.
- 자원 해제: 커서와 데이터베이스 연결을 닫습니다.
6. 예외 처리 (except 블록)
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
예외가 발생하면 Error 객체 e를 통해 에러 메시지를 얻습니다. 커서와 연결이 열려 있으면 닫습니다. 에러 메시지를 포함한 JSON 응답을 반환하며, HTTP 상태 코드는 500 (내부 서버 오류)입니다.
7. 성공 응답 반환
return {'result': 'success'}
데이터베이스 작업이 성공하면 성공 메시지를 포함한 JSON 응답을 반환합니다.
전체적인 흐름
- 클라이언트가 레시피 데이터를 JSON 형식으로 POST 요청을 보냅니다.
- 서버는 요청 데이터를 받아서 데이터베이스에 삽입합니다.
- 데이터베이스 작업이 성공하면 성공 메시지를 반환하고, 실패하면 오류 메시지를 반환합니다.
이 API는 데이터베이스 작업을 안전하게 처리하기 위해 예외 처리를 포함하고 있습니다.
Vscode 터미널(cmd)에서 flask run 입력으로 서버 실행한 후
포스트맨에서 Send 하고 상태 코드가 200 OK인지 확인, success 인지 확인해주세요

DB에 잘 들어갔는지 MySQL Workbench 에서도 확인해주시면 됩니다~

읽어주셔서 감사합니다.
'RESTful API' 카테고리의 다른 글
| RESTful API로 레시피 목록 가져오기: Python과 Flask 활용(Selecet) (0) | 2024.05.21 |
|---|---|
| Python을 사용한 MySQL 데이터베이스 연결 설정 (0) | 2024.05.21 |
| Flask로 RESTful API 서버 개발, Resource 클래스 활용 (5) | 2024.05.21 |
| API 경로와 Resource 클래스 연결하는 법 (0) | 2024.05.20 |
| 플라스크, RESTful 프레임워크와 라이브러리 설치 하는 방법 (0) | 2024.05.20 |