개발학습일지

[Restful API] Python에서 MySQL Connector 불리언(boolean) 하는 방법 본문

Restful API

[Restful API] Python에서 MySQL Connector 불리언(boolean) 하는 방법

처카푸 2024. 5. 22. 13:35

Python에서 MySQL Connector 불리언(boolean) 하는 방법 _개발 흐름 느끼기

 

1. Postman 준비

- Postman을 실행시킨다.
- add request를 눌러 새로운 API를 시작한다. (불리언이기 때문에 2가지의 API를 만든다.)
- HTTP method는 새로운 데이터를 발행(Update)은 PUT로 설정, 데이터를 임시저장은 DELETE로 설정한다.
- 나의 로컬호스트 번호를 적고 경로는 기존 레시피 경로 + 한 개의 데이터를 선택하기 위한 숫자 + 새로운 경로를 적어준다.

불리언 1
불리언 0

 

2. app.py 에 경로와 리소스를 연결, Entry point에 경로 작성하기

- 경로만 정해뒀기 때문에 경로만 우선 작성

- flask 문법 중 하나로 <int:recipe_id>는 클라이언트가 보내는 숫자 id를 인트로 받겠다는 뜻이다.

# 경로(path)와 리소스(API 코드)를 연결한다.
# Entry point
api.add_resource( 리소스이름  , '/recipes/<int:recipe_id>/publish' )

 

3. 리소스 폴더에 API 만들기

- class 리소스 만들고, app.py에 리소스 이름 적어주기

- 함수에 http 메소드 put delete 사용한다.

- recipe_id 받아주기

class RecipePublishResource(Resource):
    def put(self, recipe_id) :
    	return
        
    def delete(self, recipe_id) :
        return

 

4. 함수 안에 로직 만들기

- 큰 틀 : 클라이언트가 보낸 데이터 받기 -> DB에 수정하기 -> 클라이언트한테 JSON형식으로 응답하기

- DB에 저장하기 : DB연결 -> 퀴리문 만들기 -> 퀴리에 매칭되는 변수 처리 -> 커서를 가져온다 -> 쿼리문 커서로 실행 -> DB반영을 위해 commit -> 자원 해제하기 -> 에러발생 시 자원 해제하고, 클라이언트에게 알려주는 코드 작성하기

    def put(self, recipe_id) :
        
        #1. 클라이언트 요청

        #2. 로직
        try :
            connection = get_connection()
            query = '''
                    update recipe
                    set is_publish = 1
                    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. 클라이언트 응답
        return {"result":"success"}
    
    def delete(self, recipe_id) :
        #1. 클라이언트 요청

        #2. 로직
        try :
            connection = get_connection()
            query = '''
                    update recipe
                    set is_publish = 0
                    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. 클라이언트 응답
        return {"result":"success"}

 

5. 코드 작성이 완료되면,

- 서버 실행  $ flask run

- 포스트맨에서 Send를 클릭해 하단의 정보를 확인하고 상태코드 200 OK 인지 확인한다.

200 ok

- 입력한 정보가 DB에도 잘 변경되었는지 확인. _ mysql Workbench에서 확인해 보기

 

 


* 쿼리문 변수 작성

컬럼과 값이 동일한 위치 선상에 있으면   %s   쓰고 recode에 튜플 형태로 변수명 작성 _튜플의 기본상태 -> ( , )

문자열 변수를 넣어야 하면   '''+변수명+'''   사용

 

 

* 에러 코드 작성

숫자는 개발자 마음대로 넣는 것이지만 내용을 보고 알맞은 에러 코드를 작성해 주자.

디폴트 코드는 200 (정상)이다.

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500