Generate Excel with SQLALCHEMY and Pandas
Question:
I am trying to export the result of my query made with SQLALCHEMY.
I am able to download the file, but the columns I receive, don’t have the header names, and are not complete.
Here I join an image of what I receive:
But my database have this format:
@app.route('/excel', methods=['GET', 'POST'])
def exportexcel():
data = Data.query.all()
df = pd.DataFrame(list(data))
filename = app.config['UPLOAD_FOLDER']+"/autos.xlsx"
print("Filename: "+filename)
writer = pd.ExcelWriter(filename)
df.to_excel(writer, sheet_name='Registrados')
writer.save()
return send_file(filename)
Someone know how could I do to retrieve my database as similar as possible in the excel.
Answers:
def to_dict(row):
if row is None:
return None
rtn_dict = dict()
keys = row.__table__.columns.keys()
for key in keys:
rtn_dict[key] = getattr(row, key)
return rtn_dict
@app.route('/excel', methods=['GET', 'POST'])
def exportexcel():
data = Data.query.all()
data_list = [to_dict(item) for item in data]
df = pd.DataFrame(data_list)
filename = app.config['UPLOAD_FOLDER']+"/autos.xlsx"
print("Filename: "+filename)
writer = pd.ExcelWriter(filename)
df.to_excel(writer, sheet_name='Registrados')
writer.save()
return send_file(filename)
U can get data directly with sqlalchemy:
data = session.execute(
select(Data.id_auto, Data.modelo, Data.foto, Data.documentacion).
).all()
df = pd.DataFrame(data)
filename = 'data.xlsx'
writer = pd.ExcelWriter(filename)
df.to_excel(writer, index=False)
writer.save()
I am trying to export the result of my query made with SQLALCHEMY.
I am able to download the file, but the columns I receive, don’t have the header names, and are not complete.
Here I join an image of what I receive:
But my database have this format:
@app.route('/excel', methods=['GET', 'POST'])
def exportexcel():
data = Data.query.all()
df = pd.DataFrame(list(data))
filename = app.config['UPLOAD_FOLDER']+"/autos.xlsx"
print("Filename: "+filename)
writer = pd.ExcelWriter(filename)
df.to_excel(writer, sheet_name='Registrados')
writer.save()
return send_file(filename)
Someone know how could I do to retrieve my database as similar as possible in the excel.
def to_dict(row):
if row is None:
return None
rtn_dict = dict()
keys = row.__table__.columns.keys()
for key in keys:
rtn_dict[key] = getattr(row, key)
return rtn_dict
@app.route('/excel', methods=['GET', 'POST'])
def exportexcel():
data = Data.query.all()
data_list = [to_dict(item) for item in data]
df = pd.DataFrame(data_list)
filename = app.config['UPLOAD_FOLDER']+"/autos.xlsx"
print("Filename: "+filename)
writer = pd.ExcelWriter(filename)
df.to_excel(writer, sheet_name='Registrados')
writer.save()
return send_file(filename)
U can get data directly with sqlalchemy:
data = session.execute(
select(Data.id_auto, Data.modelo, Data.foto, Data.documentacion).
).all()
df = pd.DataFrame(data)
filename = 'data.xlsx'
writer = pd.ExcelWriter(filename)
df.to_excel(writer, index=False)
writer.save()