SqlAlchemy中汇总数据创建实体

Create an entity by summarizing data in SqlAlchemy

我正在使用有关视频游戏中战斗数据的现有模式,因为我必须使用外部程序生成的数据。此架构在技术上与我想要组织数据的方式不兼容,但它大部分都有效。

(到目前为止)出现 3 次的一个问题是向用户提供大量 table 数据 browse/search 以开始筛选可用数据。因此,我决定采用一种通用的方式来生成数据 table,并处理 AJAX 对 table 的更多数据的请求。

问题在于,其中一种情况基本上是直接从 table 中检索数据,而另一种情况实际上是从 table 中检索汇总数据。例如,模式定义了一个'Combatant',或者一个战斗的参与者,但我希望系统暴露一个'Character'的概念,或者一个存在并参与许多战斗的东西。因此,Character 将是多个不同 Encounter 中的 Combatant

基本上有两种方法可以让我从数据库中创建角色的想法。我可以使用视图,也可以让我的 ORM (SQLAlchemy) 每次都从头开始创建所需的查询。在 SQLAlchemy 中可以通过一些 possible extensions 来支持视图,但是因为我在总结,所以我丢失了主键,因此我无法创建表示视图的 ORM class。据说,您可以强制将列作为主键,但这对我不起作用(似乎什么也没做)。如果我尝试从头开始使用查询,我当前生成通用 table 的方法将无法检查(...)查询结果。

所以,我有两个问题,a MCVE 关于从头开始查询的方法:

  1. 我是否采取了解决这个已知问题的方法?

  2. 有没有办法避免使用 inspect(...) 让我使用任意字符串从查询结果对象中获取值?

关于 MCVE 的一些注意事项:

我最终使用 this code for Materialized Views 解决了这个问题。所以,所有的聚合都是由数据库完成的,而 SQLAlchemy 只是将视图视为另一个可选的。