Python 无法填充自加载关系

Python 无法填充自加载关系,python,sqlalchemy,Python,Sqlalchemy,我正在尝试使用contains\u eager选项加载一个self-relation属性,以避免在使用一个关系列进行排序或搜索时出现两个连接。我的模型对象如下所示: class Usuario(DeclarativeBase): __tablename__ = 'usuarios' __table_args__ = {'mysql_engine':'InnoDB'} id=Column(Integer, primary_key=True) usuario=Col

我正在尝试使用contains\u eager选项加载一个self-relation属性,以避免在使用一个关系列进行排序或搜索时出现两个连接。我的模型对象如下所示:

class Usuario(DeclarativeBase):
    __tablename__ = 'usuarios'
    __table_args__ = {'mysql_engine':'InnoDB'}

    id=Column(Integer, primary_key=True)
    usuario=Column(Text) 
    ...
    resellers_id=Column(Integer, ForeignKey('usuarios.id')) 
    ....
    reseller = relation('Usuario', remote_side = [id])
我正在使用以获取数据:

u= DBSession.query(Usuario).options(contains_eager('reseller'))\
            .outerjoin(self.usuarios_padre, Usuario.resellers_id == self.usuarios_padre.id)\
            .filter(Usuario.id=1)\
            .order_by(self.usuarios_padre.usuario).one()
其中,self.usuarios\u padre是Usuario的一个别名

如果我访问u.reseller.usuario我会从父公司获得与u.usuario相同的usuario

知道问题出在哪里吗?我尝试使用lazy=“joined”定义关系,但没有结果


关于

问题在于,在一个查询中加载两组
Usuario
对象,为了解决此问题,需要使用,然后明确地指定
联接
中的别名父对象,并且
包含\u eager

qry = session.query(Usuario).filter(Usuario.id==1)

# join using the aliased. Use *outerjoin* in order to still get the result for those without a parent
res = aliased(Usuario)
qry = qry.outerjoin((res, Usuario.reseller))

# specify which table/alias represents the *contained* relationship
qry = qry.options(contains_eager(Usuario.reseller, alias=res))