본문 바로가기
웹 프로그래밍

[Flask] 디비 내용 엑셀 다운로드 기능2

by Ratataca 2023. 5. 16.
from flask import Flask, render_template, make_response
import mysql.connector
from openpyxl import Workbook

app = Flask(__name__)

# MariaDB 연결 설정
db = mysql.connector.connect(
    host="localhost",
    user="your_username",
    password="your_password",
    database="your_database"
)

@app.route('/download_excel')
def download_excel():
    # 쿼리를 실행하여 데이터 가져오기
    cursor = db.cursor()
    query = "SELECT * FROM your_table"
    cursor.execute(query)
    result = cursor.fetchall()

    # 워크북 및 워크시트 생성
    wb = Workbook()
    ws = wb.active

    # 헤더 추가
    headers = [i[0] for i in cursor.description]
    ws.append(headers)

    # 데이터 추가
    for row in result:
        ws.append(row)

    # 응답 객체 생성
    response = make_response()
    # 엑셀 파일 저장
    response.headers['Content-Disposition'] = 'attachment; filename=data.xlsx'
    wb.save(response)

    # 연결과 커서 닫기
    cursor.close()
    db.close()

    return response

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

댓글