Mysql movie 테이블

vsc 가입 및 작업에 필요한 코드 세팅해두기
# utils.py 파일
from tabnanny import check
from click import password_option
from passlib.hash import pbkdf2_sha256
# 원문 비밀번호를, 암호화 하는 함수
def hash_password(original_password) :
salt = 'jh*hello12'
password = original_password + salt
password = pbkdf2_sha256.hash(password)
return password
# 비밀번호가 맞는지 확인하는 함수, True / False를 리턴한다.
def check_password(original_password, hashed_password) :
salt = 'jh*hello12'
check = pbkdf2_sha256.verify(original_password+salt, hashed_password)
return check
# mysql_connection.py 파일
import mysql.connector
def get_connection() :
connection = mysql.connector.connect(
host = 'jhdb.ct294vqgyq74.ap-northeast-2.rds.amazonaws.com',
database = 'movie1_db',
user = 'movie_user',
password = 'movie1234'
)
return connection
# config.py 파일
from enum import Flag
class Config :
JWT_SECRET_KEY = 'yhacademy1029##hello'
JWT_ACCESS_TOKEN_EXPIRES = False
PROPAGATE_EXEPTIONS = True
vsc코드
# app.py 파일
# 인폴트부분
from resources.movie import MovieListResource
#선언부분
api.add_resource(MovieListResource, '/movie')
# 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 MovieListResource(Resource):
def get(self) :
# 1. 클라이언트로부터 데이터 받아온다.
# offset : 0 , limit : 25, order : cnt or avg => cnt:카운트, avg: 평균
offset = request.args['offset']
limit = request.args['limit']
order = request.args['order']
# 2. 디비로부터 영화 가져온다.
try :
# 데이터 insert
# 1. DB에 연결
connection = get_connection()
# 2. 쿼리문 만들기
query = '''select m.id, m.title,count(r.movieId) as cnt, ifnull(avg(r.rating), 0) as avg
# moive 테이블의 id , title, 레이팅의 movieId의 갯수를 가져온다. , 해당 영화의 평점 평균을 가져온다.
from movie m
left join rating r
on m.id = r.movieId
group by m.id
order by ''' + order + ''' desc
limit '''+offset+''' , '''+limit+'''; '''
# record = (user_id, )
# 3. 커서를 가져온다.
# select를 할 때는 dictionary = True로 설정한다.
cursor = connection.cursor(dictionary = True)
# 4. 쿼리문을 커서를 이용해서 실행한다.
cursor.execute(query)
# 5. select 문은, 아래 함수를 이용해서, 데이터를 받아온다.
result_list = cursor.fetchall()
print(result_list)
# # 중요! 디비에서 가져온 timstamp는
# # 파이썬의 datetime 으로 자동 변경된다.
# # 문제는 이 데이터를 json으로 바로 보낼 수 없으므로,
# # 문자열로 바꿔서 다시 저장해서 보낸다.
i=0
for record in result_list :
result_list[i]['avg'] = float(record['avg'])
i = i+1
# 6. 자원 해제
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', 'count' : len(result_list), 'items' : result_list}, 200

| 영화 추천 서비스 API - 내가 본 영화 리뷰 평점 만들기 (0) | 2022.06.23 |
|---|---|
| 영화 추천 서비스 API - 영화 상세정보 확인하기 (0) | 2022.06.23 |
| 영화 추천 서비스 API - 로그아웃 (0) | 2022.06.23 |
| 영화 추천 서비스 API - 로그인 (0) | 2022.06.23 |
| 영화 추천 서비스 API - 회원가입 (0) | 2022.06.23 |