查询表时,我想立即加载一组列。在 1.3.x 之前,我可以使用以下代码来完成此操作,但现在我得到:
sqlalchemy.exc.ArgumentError: Attribute "AliasedClass_Blueprint.engineer" does not link from element "mapped class
Blueprint->blueprints". Did you mean to use Building.blueprint.of_type(AliasedClass_Blueprint)?
Run Code Online (Sandbox Code Playgroud)
有问题的查询设置如下:
sqlalchemy.exc.ArgumentError: Attribute "AliasedClass_Blueprint.engineer" does not link from element "mapped class
Blueprint->blueprints". Did you mean to use Building.blueprint.of_type(AliasedClass_Blueprint)?
Run Code Online (Sandbox Code Playgroud)
该错误建议使用building.blueprint.of_type(blueprint),这似乎工作正常,但它看起来正在完成与所做的类似的事情alias=blueprint。是否of_type(x)替换alias=x参数?
下面是一个功能示例,其中包含一个工作函数和一个重现错误的函数:
def doQuery():
building = aliased(Building)
blueprint = aliased(Blueprint, name="blueprint")
engineer = aliased(Engineer, name="engineer")
with sessionScope() as session:
return session.query(building)\
.join(blueprint, blueprint.id==building.blueprintId)\
.outerjoin(engineer, blueprint.engineerId==engineer.id)\
.options(contains_eager(building.blueprint, alias=blueprint))\
.options(contains_eager(building.blueprint, alias=blueprint)\
# The error shows up here
.contains_eager(blueprint.engineer, alias=engineer))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
393 次 |
| 最近记录: |