JooJaeHwan 2022. 7. 3. 01:01
728x90
반응형

코드

-  Flask에 MySQL 연결

from flask import Flask, render_template, request, session, redirect, url_for
import pandas as pd
from datetime import timedelta
from flaskext.mysql import MySQL
import keras
from pyparsing import col
from Model import Tfidf_padding, model_prediect, cosine

mysql = MySQL()
app = Flask(__name__)

app.config['MYSQL_DATABASE_USER'] = '유저'
app.config['MYSQL_DATABASE_PASSWORD'] = '비밀번호'
app.config['MYSQL_DATABASE_DB'] = 'DB이름'
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
app.config['MYSQL_DATABASE_PORT'] = 3306

app.secret_key = '9de85b1db330eddaf2a3e861d23db198baafee41a968f8365f4f9acf60fb2e09'  
app.config["PERMANENT_SESSION_LIFETIME"] = timedelta(minutes=5) # 5분후 자동 로그아웃
mysql.init_app(app)

@app.route('/')
@app.route('/index')
def index():
	if not session.get('userid'):  
		return render_template('index.html'), 200
	
	#로그인 세션정보가 없을 경우
	else:		
		userid = session.get('userid') 
		return render_template('index.html', userid=userid)

@app.route('/info')
def info():
    
    return render_template('info.html'), 200

@app.route('/result', methods=["GET","POST"])
def result():
    song = request.form.get('song')
    print(song)
    name = session.get('username')
    text = request.form.get('text')
    padded = Tfidf_padding(text)
    index = model_prediect(padded)
    conn = mysql.connect()
    cursor = conn.cursor()
    cursor.execute("SELECT DISTINCT * FROM Music.music AS m ;")
    music = cursor.fetchall()
    music = pd.DataFrame(music, columns=["artist_name", "song_name", "lyrics"])
    music_list = cosine(name, music, text)
    return render_template('result.html', name=name, index=index, music_list=music_list), 200



@app.route('/register', methods=['GET','POST'])
def register():
    return render_template('register.html'), 200


@app.route('/login', methods=['GET','POST'])
def login():
    if request.method=='GET':
        return render_template('login.html')
    else:
        userid = request.form.get('userid')
        password = request.form.get('password')
        
        conn = mysql.connect()
        cursor = conn.cursor()
        sql = "SELECT userid, user_name FROM user_info WHERE userid = %s AND password = %s"
        value = (userid, password)
        cursor.execute("set names utf8")
        cursor.execute(sql, value)

        data = cursor.fetchall()
        cursor.close()
        conn.close()
        if data != ():	# 쿼리 데이터가 존재하면
            session['userid'] = userid	# userid를 session에 저장한다.
            session['username'] = data[0][1]
            return redirect('/index')
        else:
            return 'Dont Login'	# 쿼리 데이터가 없으면 출력


@app.route('/logout', methods=['GET'])
def logout():
	session.pop('userid', None)
	return redirect('/index')

@app.route('/loading', methods=['GET', 'POST'])
def loading():
    return render_template('loading.html'),200

if __name__ == '__main__':
    app.run('0.0.0.0', port=5000, debug=True)

참고

 

[Python Flask] 웹 페이지 만들기 06 - MySQL 연동하기(DB 클래스 생성)

이전 포스트에서는 MySQL을 연동하는 방법을 알아보았습니다. 하지만 이 방법으로는 나중에 추가적인 기능을 개발하고, 또 다시 연동하는 데 있어서 매우 어려움이 있습니다.. 즉, 계속해서 데이

kkamikoon.tistory.com

 

728x90
반응형