gpt4 book ai didi

python - 如何使用 Flask 和 SQLAlchemy 输出扁平化数据库表以实现出色表现

转载 作者:行者123 更新时间:2023-12-02 17:38:25 25 4
gpt4 key购买 nike

我有四个通过外键关联的表。 DriverStopDriverDailyRouteAgency 的子级。 DriverDailyRouteUser 的子级(在我的关系中也称为 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 表中的一列。但是如何访问 DriverDailyRouteUser 表中的列?我尝试将 cols 更改为 cols = ['route.driver.first_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()

在 with_entities 方法中,您可以列出要导出到 Excel 的所有列。当然,在上面的查询中,我假设您的模型具有以下属性:

  • DriverStop - id 属性,
  • DriverDailyRoute - 名称属性和
  • 用户 - 名字属性

当然,您必须仅使用模型具有的属性。

你的 cols 变量应该如下所示:

cols = ['id', 'name', 'first_name']

关于python - 如何使用 Flask 和 SQLAlchemy 输出扁平化数据库表以实现出色表现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31832557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com