Python 使用SQLAlchemy在模型上定义按外键计数关系
我有ModelA和ModelB类,我想在ModelA上定义一个名为number_of_b_models的属性,其值是下一次查询的结果: 从modelb中选择countmodelb.id,其中modelb.a_id=:1和modelb.status=2 其中:1由ModelA中的a.id替换 由于查询本身是如此简单和自解释,因此它不必使用func.count构造或任何其他SQLAlchemy构造—只是为了让我能够轻松地使用ModelA实例中的大量模型Python 使用SQLAlchemy在模型上定义按外键计数关系,python,mysql,sqlalchemy,Python,Mysql,Sqlalchemy,我有ModelA和ModelB类,我想在ModelA上定义一个名为number_of_b_models的属性,其值是下一次查询的结果: 从modelb中选择countmodelb.id,其中modelb.a_id=:1和modelb.status=2 其中:1由ModelA中的a.id替换 由于查询本身是如此简单和自解释,因此它不必使用func.count构造或任何其他SQLAlchemy构造—只是为了让我能够轻松地使用ModelA实例中的大量模型 如何在ModelA上定义模型的数量?作为SQL
如何在ModelA上定义模型的数量?作为SQLAlchemy模型ModelA本身的属性。这个解决方案在内部实现方面并不理想-使用Session.object\u Session classmethod。这可以被insepctself.session代替,但这几乎是一样的。这显然不适用于大规模查询,如果您希望从ModelA的n个实例中获得\u b_模型的数量,那么您将触发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]