Methods SQLAlchemy混合_方法-传递明显的参数

Methods SQLAlchemy混合_方法-传递明显的参数,methods,sqlalchemy,Methods,Sqlalchemy,我正在使用python和sqlalchemy。我有一张名为Team的桌子和另一张名为Game的桌子。游戏表有“客场id”和“主场id”列,团队表有“团队id”列。我刚刚为Team类创建了这个混合方法,它将返回客场id或主场id与Team id匹配的所有游戏实例。我传递的参数s是会话实例。如何将此代码编写为@hybrid_属性,而不必向其传递会话实例 @hybrid_method def games(self, s): return s.query(Game).filter(or_(Gam

我正在使用python和sqlalchemy。我有一张名为Team的桌子和另一张名为Game的桌子。游戏表有“客场id”和“主场id”列,团队表有“团队id”列。我刚刚为Team类创建了这个混合方法,它将返回客场id或主场id与Team id匹配的所有游戏实例。我传递的参数s是会话实例。如何将此代码编写为@hybrid_属性,而不必向其传递会话实例

@hybrid_method
def games(self, s):
    return s.query(Game).filter(or_(Game.away_id==self.team_id, Game.home_id==self.team_id)).all()

首先,从我在这里看到的情况来看,这不是“@hybrid”的用例,hybrid专门用于在类级别说“MyClass.games==something”的用例,以及在实例级别说“my_object.games==something”。这里的情况并非如此,您试图完整地运行一个查询,将一个特定的
self.team\u id
传递给它-因此您需要一个
self
,因此这只是一个常规方法或描述符

因此,只需将@property与object_session()一起用作文档:

class MyClass(Base):
   # ...

   @property
   return object_session(self).query(Game).filter(...)