我有两部分应用:摄取和显示。理想情况下,这两个版本总是处于相同版本的代码中,但实际上,现实并不能实现完美的同步部署。此外,在推出相应的前端之前,我们在处理数据摄取方面很有用。
我遇到的问题是我使用SQLAlchemy的多态身份,当我在后端添加一个新类时,前端突然不知道如何处理它。这是一个具体的例子。说我有这段代码:
class Campaign(BaseData):
__tablename__ = 'campaign'
__mapper_args__ = {
'polymorphic_identity': 'parent',
'polymorphic_on': description
}
class SubCampaign(Campaign):
__mapper_args__ = {
'polymorphic_identity': 'sub'
}
然后,我添加了这个新类:
class OtherCampaign(Campaign):
__mapper_args__ = {
'polymorphic_identity': 'other'
}
当我将一些行插入数据库并将description
列设置为other
时,会抛出错误:
No such polymorphic_identity 'other' is defined
有办法解决这个问题吗?我很乐意忽略这些行。
答案 0 :(得分:0)
根据在评论中与zzzeek的讨论,我最终在读取端更改查询以仅请求有效数据。而不是:
rows = session.query(Campaign).all()
我在做
valid_descriptions = [m.polymorphic_identity for m in
Campaign.__mapper__.polymorphic_iterator()]
rows = session.query(Campaign)\
.filter(Campaign.description.in_(valid_descriptions))\
.all()