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()


创建工程师对象将在employee和engineer表中都添加一行。

session.delete(e)
session.commit()


现在,当我删除工程师对象时,我只想删除工程师表中的行,而不要删除雇员表中的行。我该如何实现?现在,两个表中的行都被删除。

任何帮助/建议将不胜感激。

最佳答案

如果使用ORM(通过调用session.delete(obj))删除工程师对象,则它将从两个表中删除记录。

但是,您想要的可以通过以下方式实现

session.query(Engineer).filter(Engineer.id==e.id).delete()
session.commit()

07-28 07:26