반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바프로그래밍
- 판다스
- 스트림릿
- 자바공부
- 자바초보
- Pandas
- Streamlit기초
- MySQL
- 웹대시보드 제작
- 판다스공부
- 자바기초
- 파이썬공부
- Streamlit기본
- 파이썬
- 자바스크립트 공부
- serverless
- 데이터베이스
- db
- 안드로이드 스튜디오
- 안드로이드 앱 개발
- 웹대시보드 기초
- Flutter
- Android
- RESTful API
- JavaScript
- streamlit
- 자바
- 스트림릿 기본
- 자바스크립트
- java
Archives
- Today
- Total
ruriruriya
[RESTful API] Python MySQL- Connector를 활용한 insert 방법 본문
반응형
Python MySQL Connector를 활용하여
SQL문으로 작성하여 쿼리문을 만들고 실행하고 반영해보자.
1. MySQL에서 쿼리문 확인
MySQL에서 insert 문 쿼리를 작성하여 테스트한다.
insert into recipe
(name, description, num_of_servings,
cook_time, directions)
values
('된장찌개','된장찌개 잘 끓이는 방법',2, 40,
'두부 넣고 물 붓고 된장 넣고 끓인다.');
잘 들어가는 것을 확인할 수 있다.
2.MySQL 접속 함수 만들기
mysql.connector 패키지 import 하여
파이썬으로 MySQL에 접속하는 함수를 만든다.
(host 등...은 Config로 다른 파일을 가리킴.)
import mysql.connector
from config import Config
# 파이썬으로 MySQL에 접속할 수 있는 함수.
def get_connection() :
connection = mysql.connector.connect(
host = Config.HOST,
database = Config.DATABASE,
user = Config.DB_USER,
password = Config.DB_PASSWORD
)
return connection
3. API 경로와 Resource 클래스 연결
API를 구분해서 실행시키는 것은, HTTP METHOD와 URL 의 조합으로 경로(path)와 리소스(API 코드)를 연결한다.
from flask import Flask
from flask_restful import Api
from resources.recipe import RecipeListResource, RecipeResource
app = Flask(__name__)
api = Api(app)
# 경로(path)와 리소스(API 코드)를 연결한다.
api.add_resource(RecipeListResource,'/recipes')
if __name__=='__main__':
app.run()
4. API 클래스에서 mysql 접속 및 쿼리문 만들기
flask 라이브러리와 mysql.connector 패키지 import 후
리소스 클래스를 오버라이딩 하여 post 함수를 만들고
클라이언트가 보내준 데이터를 받은 후
아까 만든 MySQL 접속을 위한 get_connection() 함수를 사용해 연결하고
그 다음 MySQL에서 테스트했던 쿼리문을 복사/붙여넣기 한다.
쿼리문의 값은 클라이언트가 어떻게 입력하느냐에 따라 변동하기 때문에 모두 %s로 바꿔준다.
그 후에 쿼리문에 매칭되는 변수 처리를 해주고
실행하고 커밋하는 작업을 해준다.
# flask 라이브러리와 mysql.connector 패키지 import
from flask import request
from flask_restful import Resource
from mysql_connection import get_connection
from mysql.connector import Error
class RecipeListResource(Resource):
def post(self):
# 1. 클라이언트가 보내준 데이터 받기
data = request.get_json()
print(data)
# 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
return {"result":"success"} , 200
5. postman으로 테스트
코드 작성 후 vscode 터미널에서
flask run 명령어를 실행한다.
postman에 접속하여
post, 경로, body에 json 입력하고
send 버튼을 눌러 전송한다.
하단에 성공 메세지가 뜨고
MySQL에서 잘 들어갔는지 확인해본다.
select *
from recipe;
반응형
'Python Flask' 카테고리의 다른 글
[RESTful API] Python MySQL- Connector를 활용한 update 방법 (1) | 2023.12.07 |
---|---|
[RESTful API] Python MySQL- Connector를 활용한 select 방법 (1) | 2023.12.07 |
[RESTful API] Python Flask - API 경로와 Resource 클래스 연결하는 방법 (0) | 2023.12.06 |
[RESTful API] Python Flask - API 개발을 위해 Resource 클래스 개발하는 코드 (0) | 2023.12.06 |
[RESTful API] Python Flask 프레임워크를 활용한 기본구조 (0) | 2023.12.06 |