我不知道為什么,但它說我無法通過 db 模型類“Claim”進行迭代。有誰知道如何解決它?
這是我的代碼:
@auth.route('/download')
def excel_downlaod():
# Function is defined somewhere else
data = db.session.query(Claim).all()
# Convert result set to pandas date frame and add columns
df = pd.DataFrame((list(t) for t in data), columns=('ID', 'Email', 'Date', 'Name', 'Adress', 'Report'))
# Creating output and writer (pandas excel writer)
out = io.BytesIO()
writer = pd.ExcelWriter(out, engine='xlsxwriter')
# Export data frame to excel
df.to_excel(excel_writer=writer, index=False, sheet_name='Claims')
writer.save()
writer.close()
# Flask create response
r = make_response(out.getvalue())
# Defining correct excel headers
r.headers["Content-Disposition"] = "attachment; filename=export.xlsx"
r.headers["Content-type"] = "application/x-xls"
# Return response
return r
和類:
class Claim(db.Model):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(50), nullable=False)
date = db.Column(db.DateTime(timezone=True), default=func.now())
name = db.Column(db.String(30), nullable=False)
adress = db.Column(db.String(30), nullable=False)
report = db.Column(db.String(1000), nullable=False)
uj5u.com熱心網友回復:
您可以通過直接在 pandas 中使用read_sql.
以下示例向您展示如何生成檔案并使用send_file.
from flask import send_file
# ...
@auth.route('/download')
def excel_download():
df = pd.read_sql(Claim.query.statement, db.session.get_bind())
buffer = io.BytesIO()
with pd.ExcelWriter(buffer, engine='xlsxwriter') as writer:
df.to_excel(writer, index=False, sheet_name='Claims')
buffer.seek(0)
return send_file(
buffer,
mimetype='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
download_name='export.xlsx'
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/530859.html
標籤:Pythonmysql熊猫烧瓶烧瓶-sqlalchemy
