gpt4 book ai didi

python - SQLAlchemy:load_only 不适用于别名继承模型

转载 作者:太空宇宙 更新时间:2023-11-03 18:03:48 27 4
gpt4 key购买 nike

SQLAlchemy:load_only 不适用于别名继承模型。我正在使用这个查询:

EngineerAlias = aliased(Engineer)
q = (session.query(EngineerAlias)
.options(Load(EngineerAlias).load_only('id', 'profile')))
print q.all()

我收到一个异常:

NoSuchColumnError: "Could not locate column in row 
for column '%(140249955138512 anon)s.employees__type'"

但是,这样的查询效果很好:

session.query(Engineer)\
.options(Load(Engineer).load_only('id', 'profile'))\
.all()

我知道该问题与继承鉴别器 _type 有关,如果我将其添加到 load_only 列表中,一切都会正常。但我几乎不想这样做,因为这将是我的代码中的一个丑陋的黑客(有点“如果它是继承模型,则将“_type”添加到 load_only 列表中,否则。 ..”)。

任何人都可以提出一种通过别名派生模型进行查询而不将鉴别器添加到 load_only 列表的方法吗?

数据集:

class Employee(Model):
__tablename__ = 'employees'
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String(1000))
_type = Column(String(50)) # discriminator

__mapper_args__ = {
'polymorphic_on': _type,
'polymorphic_identity': 'employee',
}


class Engineer(Employee):
__tablename__ = 'engineers'

id = Column(Integer,
ForeignKey('employees.id'),
primary_key=True,
)
profile = Column(String(1000))

__mapper_args__ = {
'polymorphic_identity': 'engineer',
}

最佳答案

关于python - SQLAlchemy:load_only 不适用于别名继承模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27231693/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com