#app.py 파일
#인폴트 부분
from resources.movie import MovieResource
#선언 부분
api.add_resource(MovieResource, '/movie/<int:movieId>')
#movie.py 파일
# 인폴트 부분
from http import HTTPStatus
from flask import request
from flask_jwt_extended import get_jwt_identity, jwt_required
from flask_restful import Resource
from mysql.connector.errors import Error
from mysql_connection import get_connection
import mysql.connector
#선언 부분
class MovieResource(Resource) :
def get(self, movieId) :
# 1. 클라이언트로부터 데이터 받아온다.
try :
connection = get_connection()
query = '''select m.*, count(r.movieId) as cnt, ifnull(avg(r.rating), 0) as avg
from movie m
left join rating r
on m.id = r.movieId
where m.id = %s
group by m.id
;'''
record = (movieId, )
# select 문은, dictionary = True 를 해준다.
cursor = connection.cursor(dictionary = True)
cursor.execute(query, record)
# select 문은, 아래 함수를 이용해서, 데이터를 가져온다.
result_list = cursor.fetchall()
print(result_list)
# 중요! 디비에서 가져온 timestamp 는
# 파이썬의 datetime 으로 자동 변경된다.
# 문제는! 이데이터를 json 으로 바로 보낼수 없으므로,
# 문자열로 바꿔서 다시 저장해서 보낸다.
i = 0
for record in result_list :
result_list[i]['avg'] = float(record['avg'])
result_list[i]['year'] = record['year'].isoformat()
result_list[i]['createdAt'] = record['createdAt'].isoformat()
i = i + 1
cursor.close()
connection.close()
except mysql.connector.Error as e :
print(e)
cursor.close()
connection.close()
return {"error" : str(e), 'error_no' : 20}, 503
return {'result' : 'success', 'items' : result_list[0]}, 200
{
"result": "success",
"items": {
"id": 321,
"title": "The Pool Boys",
"summary": "Nulla neque libero, convallis eget, eleifend luctus, ultricies eu, nibh. Quisque id justo sit amet sapien dignissim vestibulum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla dapibus dolor vel est.",
"attendance": 89469,
"year": "1993-08-28T00:00:00",
"genre": "Comedy",
"createdAt": "2022-06-22T08:33:43",
"cnt": 169,
"avg": 3.1302
}
}