API 서버개발
API 서버개발 - Python MySQL을 이용해 insert 하는 방법
isk03300
2023. 12. 6. 10:58
오늘은 python mysql을 이용하여 API에서 리퀘스트를 받아 데이터베이스로 insert 하는 방법을 알아보려 한다.
레시피 데이터로 예제를 작성 해보았다.
class RecipeListResource(Resource) :
# http Method 와 동일한 함수명으로 오버라이딩!
def post(self) :
# 1. 클라이언트가 보내준 데이터가 있으면, 그 데이터를 먼저 받아준다.
data = request.get_json()
print(data)
# 2. 받아온 레시피 데이터를 DB에 저장해야 한다.
후엔 try와 except문을 작성하여 각각의 변수를 지정해준 뒤 query 변수에 mysql에서 작성한 쿼리문을 가져온다.
후엔 recode엔 insert할 데이터의 컬럼 값 지정을 위해 데이터베이스 테이블의 컬럼 순서대로 입력을 해준 뒤,
cursor.excute() 안에 담아준다.
해당 query 변수에 sql 컬럼 명이 insert 되어야 API에서 insert한 값이 데이터베이스로 저장이 된다.
이렇게 코드를 작성한 후 API에서 원하는 값의 데이터를 insert 하면 mysql workbench 데이터베이스로 저장이 되는 모습을 확인할 수 있을 것이다.
try :
# 2-1. DB에 연결하는 코드
conncetion = get_connection()
# 2-2. 쿼리문 만들기 - insert
query = '''insert into recipe
(name, description, num_of_servings,
cook_time, directions)
values
(%s, %s, %s,%s,%s);'''
# 2-3. 위의 쿼리에 매칭되는 변수를 처리해 준다.
# 단, 라이브러리 특성상, 튜플로 만들어야 한다.
record = ( data['name'] , data['description'] ,
data['num_of_servings'] , data['cook_time'],
data['directions'])
# 2-4. 커서를 가져온다.
cursor = conncetion.cursor()
# 2-5. 위의 쿼리문을, 커서로 실행한다.
cursor.execute(query, record)
# 2-6. 커밋해줘야, DB에 완전히 반영된다.
conncetion.commit()
# 2-7. 자원해제
cursor.close()
conncetion.close()
except Error as e :
print(e)
cursor.close()
conncetion.close()
# 유저한테도 알려줘야 한다. => response 해준다
return {"result" : "fail", "error" :str(e) }, 500
# 3. DB에 잘 저장 되었으면, 클라이언트에게 응답 해준다.
# 보내줄 정보(json) 과 http 상태코드를 리턴한다.
return {"result" :"success"}, 200
이상으로 오늘의 포스팅을 마치겠습니다.