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

标签 python flask sqlalchemy

我有四个通过外键关联的表。 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/

相关文章:

python - 如何使用 Python/pandas 获取带有行摘要的分钟/小时财务数据?

javascript - Websockets 不能在 javascript 和 python 中工作

python - Flask-SQLAlchemy 导入/上下文问题

python - SQLalchemy、Flask、Python、连接未返回到池中

python - Flask 应用程序可以在本地运行,但不能在 Heroku 上运行(方法不允许)

sql-server - SQL Alchemy 检查连接

caching - 如何记住查询 SQLAlchemy 关系的结果(以实现缓存)?

python - Pandas :在一系列可用值之前/之后估算给定数量的缺失值

python - 从 for 循环中提取特定的迭代输出

python - 指定枚举字段类型的排序顺序