【发布时间】:2015-04-16 17:59:08
【问题描述】:
我想删除 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();
e.name = "John";
e.engineer_name = "Doe";
DBSession.add(e);
q = session.query(Engineer).filter(Employee.name == "John")
q.delete(False)
我收到以下错误,这是一个错误还是我做错了?
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such
column: employee.name [SQL: u'DELETE FROM engineer WHERE employee.name
= ?'] [parameters: ('John',)]
我希望 sqlalchemy 删除工程师和雇员表中的条目。
【问题讨论】:
-
不应该是
q = session.query(Engineer).filter(Engineer.name == "John")吗? (而不是Employee.name)
标签: python sqlalchemy polymorphism polymorphic-associations