> when was that raised...when defining mappers ?  this is all very hard
> to follow without an attachment of the full code.

Yes: things diverged a bit from the starting example.

Below a self contained test case. It fails fetching classes neither
root nor leaf in an inheritance tree.

Am i doing something wrong in setting up the mappers?

-- Daniele

----

from sqlalchemy import *
metadata = BoundMetaData('sqlite://')

# Database metadata

employees = Table('employees', metadata,
    Column('person_id', Integer, primary_key=True),
    Column('name', String(50)),
    Column('type', String(30)))

managers = Table('managers', metadata,
    Column('person_id', Integer,
        ForeignKey('employees.person_id'),
        primary_key=True),
    Column('manager_data', String(50)))

boss = Table('boss', metadata,
    Column('person_id', Integer,
        ForeignKey('managers.person_id'),
        primary_key=True),
    Column('powers', String(50)))

metadata.create_all()


# Python classes

class Employee(object): pass
class Manager(Employee): pass
class Boss(Manager): pass


# Mapping objects

person_join = polymorphic_union({
        'person':employees.select(employees.c.type=='person'),
        'manager':employees.join(managers),
        'boss':employees.join(managers).join(boss),
    }, None, 'pjoin')

person_mapper = mapper(Employee, employees,
    select_table=person_join,
    polymorphic_on=person_join.c.type,
    polymorphic_identity='person')

manager_mapper = mapper(Manager, managers,
    inherits=person_mapper,
    polymorphic_identity='manager')

mapper(Boss, boss,
    inherits=manager_mapper,
    polymorphic_identity='boss')


# Testing serialization

ses = create_session()
for emp in [ Employee(), Manager(), Boss() ]:
    ses.save(emp)
ses.flush()
ses.clear()

#print ses.query(Employee).select() # this works
print ses.query(Manager).select() # this doesn't
#print ses.query(Boss).select() # this works too


--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to