I have looked all over to a solution for this issue and haven't found
a solution. I am trying to use inheritance more than one level deep
and it does not seem to set the discriminator field on the top level
item. It works fine if it is only subclassed once but when you try and
do it twice it fails. The code below shows this happening in as short
of an example as I could come up with.
Thanks in advance for help,
Julian Krause
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, ForeignKey,
create_engine
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class Person(Base):
__tablename__ = 'people'
id = Column(Integer, primary_key=True)
discriminator = Column('type', String(50))
__mapper_args__ = {'polymorphic_on': discriminator}
class Engineer(Person):
__tablename__ = 'engineers'
id = Column(Integer, ForeignKey('people.id'), primary_key=True)
primary_language = Column(String(50))
discriminator = Column('type', String(50))
__mapper_args__ = {'polymorphic_identity': 'engineer',
'polymorphic_on': discriminator}
class MechanicalEngineer(Engineer):
__tablename__ = 'mechanical_engineers'
__mapper_args__ = {'polymorphic_identity': 'mechanical_engineer'}
id = Column(Integer, ForeignKey('people.id'), primary_key=True)
engineer_id = Column(Integer, ForeignKey('engineers.id'),
primary_key=True)
primary_tool = Column(String(50))
engine = create_engine('sqlite:///test.db', echo=True)
Base.metadata.drop_all(engine)
Base.metadata.create_all(engine)
Session = sessionmaker(autocommit=False, autoflush=False, bind=engine)
sess = Session()
me = MechanicalEngineer()
sess.add(me)
sess.commit()
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---