class Employee(Base):
__tablename__ = 'employee'
id = Column(Integer, primary_key=True)
name = Column(String(50))
type = Column(String(50))
__mapper_args__ = {
'polymorphic_identity':'employee',
'polymorphic_on':type
}
class Engineer(Employee):
__tablename__ = 'engineer'
id = Column(Integer, ForeignKey('employee.id'), primary_key=True)
engineer_name = Column(String(30))
__mapper_args__ = {
'polymorphic_identity':'engineer',
}
e = Engineer()
session.add(e)
session.commit()
创建一个 Engineer 对象将在 employee 和 engineer 表中添加一行。
session.delete(e)
session.commit()
现在,当我删除工程师对象时,我只想删除工程师表中的行,而不是员工表中的行。我如何实现这一目标?现在两个表中的行都被删除了。
如有任何帮助/建议,我们将不胜感激。
最佳答案
如果您使用 ORM 删除工程师对象(通过调用 session.delete(obj)
),那么它将从两个表中删除记录。
然而,你想要的也许可以通过
session.query(Engineer).filter(Engineer.id==e.id).delete()
session.commit()
关于python - Sqlalchemy 继承 - 删除子行而不删除父行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29215734/