일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Matplotlib 기초
- Streamlit기초
- db
- 스트림릿
- JavaScript
- serverless
- MySQL
- 자바초보공부
- 데이터베이스
- 웹대시보드 기초
- 자바
- 웹대시보드 제작
- 자바기초
- 안드로이드 스튜디오
- Pandas
- RESTful API
- 판다스공부
- 자바초보
- java
- 자바스크립트 공부
- 스트림릿 기본
- 판다스
- streamlit
- 판다스데이터프레임
- 자바프로그래밍
- 자바공부
- 파이썬
- 자바스크립트
- 파이썬공부
- Streamlit기본
- Today
- Total
ruriruriya
[RESTful API] Python MySQL- Connector를 활용한 update 방법 본문
[RESTful API] Python MySQL- Connector를 활용한 update 방법
루리야ㅑ 2023. 12. 7. 14:18
Python MySQL Connector를 활용하여
SQL문으로 작성하여 update 쿼리문을 만들고 실행하고 반영해보자.
1. MySQL에서 쿼리문 확인
MySQL에서 update문 쿼리를 작성하여 테스트한다.
아래는 기존에 존재하던 값을 수정하는 쿼리문이다.
update recipe
set name = '고추장찌개',
description = '고추장찌개 잘 끓이는 방법',
num_of_servings = 2,
cook_time = 40,
directions ='돼지고기 넣고 볶고 고추장 넣고 애호박 넣고 끓인다.'
where id = 1;
-- 테스트 확인
select *
from recipe;
id 1번이 잘 바뀐 것을 확인할 수 있다.
2.MySQL 접속 함수 만들기
mysql.connector 패키지 import 하여 접속함수를 만드는 것은 지난 포스팅의 2번을 확인하자.
https://ruriruriya.tistory.com/98
3. API 경로와 Resource 클래스 연결
path(경로)에 숫자나 문자가 바뀌면서 처리되는 경우에는 해당 변수를, 파라미터에 꼭 써줘야 한다.
이 변수는, 경로와 API 코드가 있는 파이썬 파일의 add_resource 함수에서 사용한 변수이다.
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(RecipeResource,'/recipes/<int:recipe_id>')
if __name__=='__main__':
app.run()
4. API 클래스에서 mysql 접속 및 쿼리문 만들기
flask 라이브러리와 mysql.connector 패키지 import 후
리소스 클래스를 오버라이딩 하여 put함수를 만든다.
클라이언트가 보내준 데이터를 받은 후
아까 만든 MySQL 접속을 위한 get_connection() 함수를 사용해 연결하고
그 다음 MySQL에서 테스트했던 쿼리문을 복사/붙여넣기 한다.
쿼리문의 값은 클라이언트가 어떻게 입력하느냐에 따라 변동하기 때문에 모두 %s로 바꿔준다.
recipe_id는 레시피 테이블의 아이디가 저장되어 있는 변수이다.
그 후에 쿼리문에 매칭되는 변수 처리를 해주고
실행하고 커밋하는 작업을 해준다.
class RecipeResource(Resource) :
def put(self, recipe_id) : # 레시피 테이블의 아이디가 저장되어 있는 변수 : recipe_id
# path(경로)에 숫자나 문자가 바뀌면서 처리되는 경우에는
# 해당 변수를, 파라미터에 꼭 써줘야 한다.
# 이 변수는, app.py 파일의 addResource 함수에서 사용한 변수!
# 1. 클라이언트로부터 데이터를 받아온다.
# body 에 들어있는 json 데이터.
data = request.get_json()
# 2. DB 레시피 테이블을 업데이트 한다.
try :
connection = get_connection()
query = '''update recipe
set name = %s,
description = %s,
num_of_servings = %s,
cook_time = %s,
directions = %s
where id = %s;'''
record = (data['name'],
data['description'],
data['num_of_servings'],
data['cook_time'],
data['directions'],
recipe_id)
cursor = connection.cursor()
cursor.execute(query, record)
connection.commit() # 반영
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에서 새로운 api 생성하여 메소드(PUT), 패스 등 설정 후
수정할 컬럼과 데이터를 딕셔너리 형식으로 Body의 raw / JSON으로 입력한다.
Send 클릭하면 아래에 성공메세지가 뜨고
MySQL에서 해당 DB의 데이터를 변경된 것을 확인할 수 있다.
'☁️RestFul API (Python Flask)' 카테고리의 다른 글
[RESTful API]Python MySQL- 경로에 숫자가 들어오는데 숫자가 변하는 경우 변수 처리 (1) | 2023.12.07 |
---|---|
[RESTful API] Python MySQL- Connector를 활용한 delete 방법 (2) | 2023.12.07 |
[RESTful API] Python MySQL- Connector를 활용한 select 방법 (1) | 2023.12.07 |
[RESTful API] Python MySQL- Connector를 활용한 insert 방법 (1) | 2023.12.06 |
[RESTful API] Python Flask - API 경로와 Resource 클래스 연결하는 방법 (0) | 2023.12.06 |