개발학습일지
[Restfull API] Python에서 MySQL Connector insert 하는 방법 본문
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
500 Internal Server Error - HTTP | MDN
The HyperText Transfer Protocol (HTTP) 500 Internal Server Error server error response code indicates that the server encountered an unexpected condition that prevented it from fulfilling the request.
developer.mozilla.org
'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 |