Python 如何使用Flask和SQLAlchemy将扁平数据库表输出到excel
我有四个通过外键关联的表Python 如何使用Flask和SQLAlchemy将扁平数据库表输出到excel,python,flask,sqlalchemy,Python,Flask,Sqlalchemy,我有四个通过外键关联的表DriverStop是DriverDailyRoute和机构的子级DriverDailyRoute是User(在我的关系中也称为driver)的子级。我想将所有这些数据展平到一个表中,以便将其导出到excel。我做这件事有困难。下面的代码有效 @app.route('/admin/dumpdb') @admin_filter def admin_dump_db(): query = model.DriverStop.query.join(model.DriverD
DriverStop
是DriverDailyRoute
和机构的子级DriverDailyRoute
是User
(在我的关系中也称为driver
)的子级。我想将所有这些数据展平到一个表中,以便将其导出到excel。我做这件事有困难。下面的代码有效
@app.route('/admin/dumpdb')
@admin_filter
def admin_dump_db():
query = model.DriverStop.query.join(model.DriverDailyRoute, model.Agency).join(model.User).all()
print(query[0].route.driver.username)
cols = ['dairy']
return excel.make_response_from_query_sets(query, cols, "xls")
在这种情况下,dairy是DriverStop
表中的一列。但是如何访问DriverDailyRoute
或User
表中的列?我试图将cols更改为cols=['route.driver.first\u name']
,但这会产生错误。我怎样才能解决这个问题
还有一种方法可以更改excel文件中列的显示名称,如cols=[('Dairy Collected','Dairy')]
?您可以使用with_entities()方法解决此问题。
尝试按以下方式更改查询:
query = model.DriverStop.query.with_entities(DriverStop.id, DriverDailyRoute.name, User.first_name).join(model.DriverDailyRoute, model.Agency).join(model.User).all()
cols = ['id', 'name', 'first_name']
在with_entities方法中,可以列出要导出到excel的所有列。
当然,在上面的查询中,我假设您的模型具有以下属性:
- DriverStop-id属性
- DriverDailyRoute-名称属性和
- 用户名属性
当然,您必须只使用模型具有的属性
您的cols变量应该如下所示:
query = model.DriverStop.query.with_entities(DriverStop.id, DriverDailyRoute.name, User.first_name).join(model.DriverDailyRoute, model.Agency).join(model.User).all()
cols = ['id', 'name', 'first_name']
谢谢,对OP来说太晚了,不是对我:)