Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用SQLAlchemy在模型上定义按外键计数关系_Python_Mysql_Sqlalchemy - Fatal编程技术网

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

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和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上定义模型的数量?

作为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]