thanks ! On Jul 19, 2006, at 7:24 PM, Sol wrote:
> Hello, > the example code for multiple table inheritance > > (http://www.sqlalchemy.org/docs/ > adv_datamapping.myt#advdatamapping_inheritance_multiple) > > > does not work with the previously introduce class setup > > (http://www.sqlalchemy.org/docs/ > adv_datamapping.myt#advdatamapping_inheritance) > > The attached patch solves this. > > > Cheers, Sol. > Index: doc/build/content/adv_datamapping.txt > =================================================================== > --- doc/build/content/adv_datamapping.txt (revision 1722) > +++ doc/build/content/adv_datamapping.txt (working copy) > @@ -457,22 +457,22 @@ > Like concrete table inheritance, this can be done non- > polymorphically, or with a little more complexity, polymorphically: > > {python title="Multiple Table Inheritance, Non-polymorphic"} > - people = Table('people', metadata, > + employees = Table('employees', metadata, > Column('person_id', Integer, primary_key=True), > Column('name', String(50)), > Column('type', String(30))) > > engineers = Table('engineers', metadata, > - Column('person_id', Integer, ForeignKey > ('people.person_id'), primary_key=True), > + Column('person_id', Integer, ForeignKey > ('employees.person_id'), primary_key=True), > Column('engineer_info', String(50)), > ) > > managers = Table('managers', metadata, > - Column('person_id', Integer, ForeignKey > ('people.person_id'), primary_key=True), > + Column('person_id', Integer, ForeignKey > ('employees.person_id'), primary_key=True), > Column('manager_data', String(50)), > ) > > - person_mapper = mapper(Person, people) > + person_mapper = mapper(Employee, employees) > mapper(Engineer, engineers, inherits=person_mapper) > mapper(Manager, managers, inherits=person_mapper) > > @@ -481,15 +481,16 @@ > {python title="Multiple Table Inheritance, Polymorphic"} > person_join = polymorphic_union( > { > - 'engineer':people.join(engineers), > - 'manager':people.join(managers), > - 'person':people.select(people.c.type=='person'), > + 'engineer':employees.join(engineers), > + 'manager':employees.join(managers), > + 'person':employees.select(employees.c.type=='person'), > }, None, 'pjoin') > > - person_mapper = mapper(Person, people, > select_table=person_join, polymorphic_on=person_join.c.type, > polymorphic_identity='person') > + person_mapper = mapper(Employee, employees, > select_table=person_join, polymorphic_on=person_join.c.type, > polymorphic_identity='person') > mapper(Engineer, engineers, inherits=person_mapper, > polymorphic_identity='engineer') > mapper(Manager, managers, inherits=person_mapper, > polymorphic_identity='manager') > > + > The join condition in a multiple table inheritance relationship > can be specified explicitly, using `inherit_condition`: > > {python} > ---------------------------------------------------------------------- > --- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to > share your > opinions on IT & business topics through brief surveys -- and earn > cash > http://www.techsay.com/default.php? > page=join.php&p=sourceforge&CID=DEVDEV________________________________ > _______________ > Sqlalchemy-users mailing list > Sqlalchemy-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Sqlalchemy-users mailing list Sqlalchemy-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users