Python 在SQLAlchemy中,有没有一种方法可以使用一个查询来加载同一类的多个别名可选择项?
我有一个SQLAlchemy映射类Python 在SQLAlchemy中,有没有一种方法可以使用一个查询来加载同一类的多个别名可选择项?,python,sql,sqlalchemy,Python,Sql,Sqlalchemy,我有一个SQLAlchemy映射类MyClass,还有两个别名。我可以使用selectinload()分别在每个别名上加载关系MyClass.relationship,如下所示: alias_1, alias_2 = aliased(MyClass), aliased(MyClass) q = session.query(alias_1, alias_2).options( selectinload(alias_1.relationship), selectinload(alia
MyClass
,还有两个别名。我可以使用selectinload()
分别在每个别名上加载关系MyClass.relationship
,如下所示:
alias_1, alias_2 = aliased(MyClass), aliased(MyClass)
q = session.query(alias_1, alias_2).options(
selectinload(alias_1.relationship),
selectinload(alias_2.relationship))
但是,这会导致对MyClass.relationship
进行两次单独的SQL查询(除了对MyClass
的主查询之外,但这与问题无关)。由于对MyClass.relationship
的这两个查询是在同一个表中,我认为应该可以合并这些查询中IN
子句中生成的主键,只需对MyClass.relationship
运行一个查询
我对如何做到这一点的最佳猜测是:
alias_1, alias_2 = aliased(MyClass), aliased(MyClass)
q = session.query(alias_1, alias_2).options(
selectinload(MyClass.relationship))
但它显然不起作用:
sqlalchemy.exc.ArgumentError:映射属性“MyClass.relationship”不适用于此查询中的任何根实体,例如别名(MyClass)、别名(MyClass)。请指定从一个根实体到目标属性的完整路径。
在炼金术中有没有办法做到这一点