Python에서 MySQL Connector delete(삭제) 하는 방법 _개발 흐름 느끼기
1. Postman 준비
- Postman을 실행시킨다.
- add request를 눌러 새로운 API를 시작한다.
- HTTP method는 새로운 데이터를 저장(delete) 할 것이기 때문에 DELETE로 설정,
- 나의 로컬호스트 번호를 적고 경로는 기존 레시피 경로에 추가로, 한 개의 데이터를 선택하기 위해서 숫자를 임의로 적어준다.
2. app.py 에 경로와 리소스를 연결, Entry point에 경로 작성하기
- 경로만 정해뒀기 때문에 경로만 우선 작성
- flask 문법 중 하나로 <int:recipe_id>는 클라이언트가 보내는 숫자 id를 인트로 받겠다는 뜻이다.
# 경로(path)와 리소스(API 코드)를 연결한다.
# Entry point
api.add_resource( 리소스이름 , '/recipes/<int:recipe_id>' )
3. 리소스 폴더에 API 만들기
- class 리소스 만들고, app.py에 리소스 이름 적어주기
- 함수에 http 메소드 delete 사용한다.
- 경로에 recipe_id 받아주기
class RecipeListResource(Resource):
def put(self, recipe_id) :
return
4. 함수 안에 로직 만들기
- 큰 틀 : 클라이언트가 보낸 데이터 받기 -> DB에 수정하기 -> 클라이언트한테 JSON형식으로 응답하기
- DB에 저장하기 : DB연결 -> 퀴리문 만들기 -> 퀴리에 매칭되는 변수 처리 -> 커서를 가져온다 -> 쿼리문 커서로 실행 -> DB반영을 위해 commit -> 자원 해제하기 -> 에러발생 시 자원 해제하고, 클라이언트에게 알려주는 코드 작성하기
def delete(self, recipe_id):
# 1. 데이터를 받는다
print( recipe_id )
# 2. DB로 부터 데이터 가져온다
try :
connection = get_connection()
query = '''
delete from recipe
where id = %s;'''
record = (recipe_id, )
cursor = connection.cursor()
cursor.execute(query, record )
connection.commit()
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
# 3. 클라이언트에게 JSON형식으로 응답한다.
return {"result" : "success"}
5. 코드 작성이 완료되면,
- 서버 실행 $ flask run
- 포스트맨에서 Send를 클릭해 하단의 정보를 확인하고 상태코드 200 OK 인지 확인한다.
- 입력한 정보가 DB에서 잘 삭제되었는지 확인. _ mysql Workbench에서 확인해보기
* 쿼리문 변수 작성
컬럼과 값이 동일한 위치 선상에 있으면 %s 쓰고 recode에 튜플 형태로 변수명 작성 _튜플의 기본상태 -> ( , )
문자열 변수를 넣어야 하면 '''+변수명+''' 사용
* 에러 코드 작성
숫자는 개발자 마음대로 넣는 것이지만 내용을 보고 알맞은 에러 코드를 작성해 주자.
디폴트 코드는 200 (정상)이다.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
'RESTFUL API 개발' 카테고리의 다른 글
[Restful API] 비밀번호 단방향 암호화와 확인하는 코드 _ pbkdf2_sha256 사용 (0) | 2024.05.22 |
---|---|
[Restful API] Python에서 MySQL Connector 불리언(boolean) 하는 방법 (0) | 2024.05.22 |
[Restfull API] Python에서 MySQL Connector Update 하는 방법 (0) | 2024.05.22 |
[Restfull API] Python에서 MySQL Connector select 하는 방법 (0) | 2024.05.21 |
[Restfull API] Python에서 MySQL Connector insert 하는 방법 (0) | 2024.05.21 |