python - Sqlalchemy 继承 - 删除子行而不删除父行?

标签 python inheritance sqlalchemy

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/

相关文章:

python - MySQL高效导入大数据列表

python - SQLAlchemy 中的信号或触发器

python - Tensorflow 对象检测 : how to detect on batch

python - 卡夫卡超时错误 ('Failed to update metadata after 60.0 secs.' )

javascript - 为什么 Flask 会与 Reactjs 一起用于 Restful API?

python - BeautifulSoup 获取 href

php - php获取一个类的所有子类的方法

c++ - 在 C++ 中将变量传递给构造函数

python - 在 sqlalchemy 中进行自然连接

c++ - C++中模板类的继承