gpt4 book ai didi

python - 使用 SQLAlchemy 在模型上按外键关系定义计数

转载 作者:行者123 更新时间:2023-11-29 23:57:48 26 4
gpt4 key购买 nike

我有 ModelAModelB 类,并且我想在 ModelA 上定义一个名为 number_of_b_models 的属性,该属性value 是下一个查询的结果:

从 modelb 中选择计数(modelb.id),其中 modelb.a_id = :1 AND modelb.status = 2

其中 :1ModelA 中的 a.id 替换。

由于查询本身非常简单且不言自明,因此不必使用 func.count 构造或任何其他 SQLAlchemy 构造 - 只是为了让我能够轻松地使用 来自 ModelA 实例的 number_of_b_models

如何在 ModelA 上定义 number_of_b_models

最佳答案

作为 SQLAlchemy 模型 (ModelA) 本身的属性。该解决方案在内部实现方面并不理想 - 使用 Session.object_session 类方法。这可以用 insepct(self).session 替换 - 但这几乎是同一件事。这显然不适合批量查询(如果您想要来自 ModelAn 实例的 number_of_b_models,您将触发 n 数据库调用)。它确实使 ModelA 的 API 更干净。

@property
def number_of_b_models(self):
return Session.object_session(self).query(
func.count(ModelB.id)
).filter_by(a_id=self.id, status=2).first()[0]

关于python - 使用 SQLAlchemy 在模型上按外键关系定义计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25227337/

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