일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Pandas
- 자바기초
- 자바공부
- serverless
- RESTful API
- MySQL
- 안드로이드 스튜디오
- 스트림릿
- 스트림릿 기본
- streamlit
- JavaScript
- 자바스크립트
- 판다스공부
- 웹대시보드 기초
- 데이터베이스
- db
- Streamlit기초
- 파이썬공부
- java
- 자바프로그래밍
- 자바스크립트 공부
- Flutter
- 자바
- Streamlit기본
- 안드로이드 앱 개발
- 자바초보
- 웹대시보드 제작
- 파이썬
- Android
- 판다스
- Today
- Total
ruriruriya
[RESTful API] Python MySQL- Connector를 활용한 update 방법 본문
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의 데이터를 변경된 것을 확인할 수 있다.
'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 방법 (0) | 2023.12.06 |
[RESTful API] Python Flask - API 경로와 Resource 클래스 연결하는 방법 (0) | 2023.12.06 |