Dear List, I have an issue with single table inheritance and sqlalchemy version 0.5.2. Specifically, I want to disable polymorphic load when querying over a set of objects that are within a single-table- inheritance. The normal way of using 'with_polymorphic(cls)' does not seem to work properly here (the three queries at the end of the provided code all return the same list of objects).
I would be grateful if someone could read the short piece of code and give me advice for how to retrieve only the 'Jon Doe' object of the base class with the query. Thanks a lot. -sven import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.orm import mapper, relation from sqlalchemy.orm import sessionmaker from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey engine = create_engine('sqlite:///:memory:', echo=False) metadata = MetaData() class Employee(object): def __init__(self, name): self.name = name def __repr__(self): return self.__class__.__name__ + " " + self.name class Manager(Employee): def __init__(self, name, manager_data): self.name = name self.manager_data = manager_data def __repr__(self): return self.__class__.__name__ + " " + self.name + " " + self.manager_data class Engineer(Employee): def __init__(self, name, engineer_info): self.name = name self.engineer_info = engineer_info def __repr__(self): return self.__class__.__name__ + " " + self.name + " " + self.engineer_info employees = Table('employees', metadata, Column('employee_id', Integer, primary_key=True), Column('name', String(50)), Column('type', String(30), nullable=False) ) engineers = Table('engineers', metadata, Column('employee_id', Integer, ForeignKey('employees.employee_id'), primary_key=True), Column('engineer_info', String(50)), ) managers = Table('managers', metadata, Column('employee_id', Integer, ForeignKey('employees.employee_id'), primary_key=True), Column('manager_data', String(50)), ) metadata.create_all(engine) mapper(Employee, employees, polymorphic_on=employees.c.type, polymorphic_identity='employee') mapper(Engineer, engineers, inherits=Employee, polymorphic_identity='engineer') mapper(Manager, managers, inherits=Employee, polymorphic_identity='manager') b = Employee('Jon Doe') m = Manager('Jay Smith', 'Bailout Money') e = Manager('Zephran Cochran', 'Hammer') Session = sessionmaker(bind=engine) session = Session() session.add(b) session.add(m) session.add(e) session.commit() print session.query(Employee).all() print session.query(Employee).with_polymorphic(Employee).all() print session.query(Employee).with_polymorphic('*').all() --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---