Python에서 MySQL Connector insert 하는 방법 _개발 흐름 느끼기
1. Postman 준비
- Postman을 실행시킨다.
- add request를 눌러 새로운 API를 시작한다.
- HTTP method 는 새로운 데이터를 저장(insert) 할 것이기 때문에 POST로 설정,
- 나의 로컬호스트 번호를 적고 경로를 적어준다.
- 저장하고 싶은 데이터 Body에 raw를 JSON 형식으로 입력해 준다.
2. app.py 에 경로와 리소스를 연결, Entry point에 경로 작성하기
- 경로만 정해뒀기 때문에 경로만 우선 작성
# 경로(path)와 리소스(API 코드)를 연결한다.
# Entry point
api.add_resource( 리소스이름 , '/recipes' )
3. 리소스 폴더에 API 만들기
- class 리소스 만들고, app.py에 리소스 이름 적어주기
- 함수에 http 메소드 post 사용한다.
class RecipeListResource(Resource):
def post(self) :
return
4. 함수 안에 로직 만들기
- 큰 틀 : 클라이언트가 보낸 데이터 받기 -> DB에 저장하기 -> 클라이언트한테 JSON형식으로 응답하기
- DB에 저장하기 : DB연결 -> 퀴리문 만들기 -> 퀴리에 매칭되는 변수 처리 -> 커서를 가져온다 -> 쿼리문 커서로 실행 -> DB반영을 위해 commit -> 자원 해제하기
def post(self) :
# 로직
# 1. 클라이언트가 보낸준 데이터가 있으면
# 그 데이터를 받아준다.
data = request.get_json()
# 2. 이 정보를 DB에 저장한다.
try :
### 1. DB에 연결
connection = get_connection()
### 2. 쿼리문 만들기
query = '''insert into recipe
(name, description, num_of_servings, cook_time, directions)
values
( %s , %s , %s , %s , %s );'''
#### 3. 쿼리에 매칭되는 변수 처리 => 튜플로!!
record = (data['name'], data['description'], data['num_of_servings'], data['cook_time'], data['directions'])
### 4. 커서를 가져온다
cursor = connection.cursor()
### 5. 쿼리문을 커서로 실행한다
cursor.execute( query , record )
### 6. DB에 완전히 반영하기 위해서는 commit 한다
connection.commit()
### 7. 자원 해제
cursor.close()
connection.close()
except Error as e :
# try에서 에러가 발생하면 클라이언트한테 리턴해준다.
if cursor is not None :
cursor.close()
if connection is not None :
connection.close()
return {'result':'fail', 'error':str(e)}, 500
return {'result':'success'}, 200
5. 코드 작성이 완료되면,
- 서버 실행 $ flask run
- 포스트맨에서 Send를 클릭해 하단의 정보를 확인하고 상태코드 200 OK 인지 확인한다.
- 입력한 정보가 DB에 잘 들어갔는지 확인. _ mysql Workbench에서 select * from recipe; 해보기
* 쿼리문 변수 작성
컬럼과 값이 동일한 위치 선상에 있으면 %s 쓰고 recode에 튜플 형태로 변수명 작성 _튜플의 기본상태 -> ( , )
문자열 변수를 넣어야 하면 '''+변수명+''' 사용
* 에러 코드 작성
숫자는 개발자 마음대로 넣는 것이지만 내용을 보고 알맞은 에러 코드를 작성해 주자.
디폴트 코드는 200 (정상)이다.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
'RESTFUL API 개발' 카테고리의 다른 글
[Restfull API] Python에서 MySQL Connector Update 하는 방법 (0) | 2024.05.22 |
---|---|
[Restfull API] Python에서 MySQL Connector select 하는 방법 (0) | 2024.05.21 |
[Restful API] Python에서 MySQL 커넥션 하는 방법 (0) | 2024.05.21 |
[Restfull API] TypeError : Object of type ... is not JSON serializable 에러가 발생한 이유와 해결 방법 (0) | 2024.05.21 |
[Restfull API] 파이썬 MySQL Connector 라이브러리 설치 방법 (0) | 2024.05.21 |