我正在使用有关视频游戏中战斗数据的现有模式,因为我必须使用外部程序生成的数据。这个模式在技术上与我想要组织数据的方式不兼容,但它主要是有效的。
出现 3 次(到目前为止)的一个问题是为用户提供一个大数据表以浏览/搜索以开始筛选可用的数据。因此,我决定采用一种通用的方式来生成数据表,并处理 AJAX 请求以向该表提供更多数据。
问题是其中一种情况基本上是直接从表中检索数据,而另一种情况实际上是从表中检索汇总数据。例如,模式定义了“战斗者”或战斗参与者,但我希望系统公开“角色”的概念,或存在并参与许多战斗的事物。因此,aCharacter
将是Combatant
多个不同Encounter
的 s 中的 a。
基本上有两种方法可以从数据库中创建角色的想法。我可以使用视图,也可以让我的 ORM (SQLAlchemy) 每次都从头开始创建所需的查询。在 SQLAlchemy 中可以通过一些可能的扩展来支持视图,但是因为我在总结,我丢失了主键,因此我无法创建表示视图的 ORM 类。据说,您可以强制一列成为主键,但这对我不起作用(似乎什么也没做)。如果我尝试从头开始使用查询,那么我当前生成通用表的方式将无法正常工作,因为我希望能够检查(...)查询结果。
所以,我有两个问题,还有一个用于从头开始查询的 MCVE :
我是否正在采取一种方法来解决这个已知不好的问题?
有没有办法避免使用允许我使用任意字符串从查询结果对象中获取值的 inspect(...) ?
关于 MCVE 的一些注意事项:
我已经删除了 ORM 对象的数量、每个对象中的列以及列列表中的配置信息。列列表的原始形式很难看。
双嵌套
for
循环在 MCVE 中的地方,在我的实际代码中有一个模板系统。Web 服务器,生成 HTML,所有通常的乐趣都被剥离了,专注于 SQLAlchemy。