- changed status to resolved
single inherit from a joined table inherit
Issue #1036
resolved
this example should work but doesnt sync from Person to Employee:
lass Person(object):
def __init__(self, name):
self.name = name
def __repr__(self):
return self.__class__.__name__ + " " + self.name
class Employee(Person):
def __init__(self, name, employee_data):
self.name = name
self.employee_data = employee_data
def __repr__(self):
return self.__class__.__name__ + " " + self.name + " " +
self.employee_data
class Manager(Employee):
def __init__(self, name, employee_data, manager_data):
self.name = name
self.employee_data = employee_data
self.manager_data = manager_data
def __repr__(self):
return self.__class__.__name__ + " " + self.name + " " +
self.manager_data
persons_table = Table('persons', metadata,
Column('person_id', Integer, primary_key=True),
Column('name', String(50)),
Column('type', String(20), nullable=False)
)
employees_table = Table('employees', metadata,
Column('person_id', Integer, ForeignKey('persons.person_id'),
primary_key=True),
Column('employee_data', String(50)),
Column('manager_data', String(50)),
)
person_mapper = mapper(Person, persons_table, \
polymorphic_on=persons_table.c.type,
polymorphic_identity='person')
employee_mapper = mapper(Employee, employees_table, inherits=Person,
polymorphic_identity='engineer')
manager_mapper = mapper(Manager, inherits=employee_mapper,
polymorphic_identity='manager')
metadata.create_all(engine);
Session = scoped_session(sessionmaker(bind=engine, autoflush=True,
transactional=True))
session = Session();
session.save(Person('fer'))
session.save(Employee('e', 'e1'))
session.save(Manager('m', 'e2', 'm1'))
session.flush()
Comments (2)
-
reporter -
reporter - removed milestone
Removing milestone: 0.4.6 (automated comment)
- Log in to comment
6595a5af31ee473f4388db5917c59f0965a64279 0ca037c65ed450b030c1306c04c18058ccf2c979