📝Python MySQL Connector select 해보기
포스트맨을 실행시켜 POST로 설정하고 URL을 입력해준다
※ 포스트맨 겟(GET)과 딜리트(DELETE)는 바디(Body)에 셋팅하지 않는다
Visual Studio Code에서 아래처럼 코드를 작성해준다
+ app.py에 경로와 리소스(API코드)를 연결하는 코드도 작성해준다
>>> api.add_resource(RecipeListResource, '/recipes')
from flask import request
from flask_restful import Resource
from myspl_connection import get_connection
from mysql.connector import Error
class RecipeListResource(Resource) :
def get(self) :
# 1. 클라이언트가 보내준 데이터를 받아온다
# 없기때문에 작성하지 않는다
# 2. DB에 저장된 데이터를 가져온다
try :
connection = get_connection()
query = '''select * from recipe;'''
# 중요. select문은 cursor가져올때 dictionary= True로 해준다
cursor = connection.cursor(dictionary= True)
cursor.execute(query)
result_list = cursor.fetchall()
print(result_list)
# 중요. DB에서 가져온 timestamp는 파이썬에서 datetime으로 자동 변환되는데
# 문제는 json으로 클라이언트한테 데이터를 보내줘야하는데 datetime은 json으로 보낼 수 없다
# 따라서 시간을 문자열로 변환해서 보내준다
i = 0
for row in result_list :
result_list[i]['created_at'] = row['created_at'].isoformat()
result_list[i]['updated_at'] = row['updated_at'].isoformat()
i = i + 1
cursor.close()
connection.close()
except Error as e :
print(e)
cursor.close()
connection.close()
return {"result" : "fail", "error" : str(e)}, 500
return {"result" : "success", "items" : result_list, "count" : len(result_list)}, 200
코드를 작성하고 비주얼 스튜디오 코드에서 서버를 실행시키고(flask run)
포스트맨에서 Send를 클릭해 하단의 정보를 확인하고 상태코드가 200 OK 됐는지 확인한다
+ 1개만 셀렉트(select)해서 가져오기
class RecipeResource(Resource) :
def get(self, recipe_id) :
# 1. 클라이언트로부터 정보를 가져온다
# print(recipe_id) 디버깅
# 2. DB로부터 해당 레시피 아이디에 맞는 레시피 데이터를 가져온다
try :
connection = get_connection()
query = '''select * from recipe
where id = %s ;'''
# 튜플로 작성해준다(, 안찍으면 에러 발생)
record = (recipe_id, )
cursor = connection.cursor(dictionary= True)
cursor.execute(query, record)
result_list = cursor.fetchall()
i = 0
for row in result_list :
result_list[i]['created_at'] = row['created_at'].isoformat()
result_list[i]['updated_at'] = row['updated_at'].isoformat()
i = i + 1
cursor.close()
connection.close()
except Error as e :
print(e)
cursor.close()
connection.close()
return {"result" : "fail", "error" : str(e)}, 500
if len(result_list) == 0 :
return {"result" : "fail", "message" : "데이터 없습니다"}, 400
return {"result" : "success", "item" : result_list[0]}, 200
'Restful API' 카테고리의 다른 글
[Restful API] Python MySQL Connector delete 해보기 (0) | 2023.01.04 |
---|---|
[Restful API] Python MySQL Connector update 해보기 (0) | 2023.01.04 |
[Restful API] Python MySQL Connector insert 해보기 (0) | 2023.01.04 |
[Restful API] python flask에서 Resource 클래스를 이용한 API 서버 개발 (0) | 2023.01.04 |
[Restful API] python flask app.py 파일 코딩 (0) | 2023.01.04 |
댓글