mysql에 적재된 data를 flask 웹에 띄우기 (+ 개선사항)

2023. 9. 5. 13:38학습/Data Engineering

 

from flask import Flask, render_template
from sqlalchemy import create_engine
import pandas as pd

app = Flask(__name__)

# MySQL 서버 정보 설정
host="localhost"
user="testuser"
password="1234"
database="TESTDB"

# SQLAlchemy 엔진 생성
engine_url = f'mysql+pymysql://{user}:{password}@{host}/{database}'
engine = create_engine(engine_url, echo=True)



@app.route('/')
def home():
    # 쿼리 실행 및 결과 DataFrame으로 변환
    query = "SELECT * FROM t3_table"
    df = pd.read_sql(query, engine)
    
    return render_template('home.html', tables=[df.to_html(classes='data')], titles=df.columns.values)
    

if __name__ == '__main__':
    app.run(debug=True)

 

 

 

<!DOCTYPE html>
<html>
<head>
    <title>Home Page</title>
</head>
<body>

{% for table in tables %}
    {{table|safe}}
{% endfor %}

</body>

 

 

strava api를 이용해 data를 받아

pandas를 이용해 필터링과 df화해서 mysql에 적재하였다.

그 mysql에 적재된 데이터를 flask 웹에 보내주기

 

 

개선사항

 

한페이지에 모두 불러내서 확대, 축소시 시간이 오래걸림

->

프론트에서 해결방법

1. 페이지네이션

(지금 위의 코드에서는 mysql의 TESTDB라는 DB의 t3_table의 데이터를 모두 한번에 가져오기때문에 오래 걸린다고 생각.

페이지네이션으로 1~100개 만 조회한다던지,

조건문 쿼리를 선택해서 보낼수 있는 입력창을 만든다던지,

-> 웹에 좀 더 집중한 방법 이라고 생각.)

 

백단

1. 하둡 에코시스템 구축(지금 공부의 목표)

 

728x90