From: Mike Bayer Date: Thu, 20 Jul 2006 00:20:45 +0000 (+0000) Subject: patch to inheritance section X-Git-Tag: rel_0_2_6~1 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=98fb8894e3214fa01e2cfe5e83de5ff8d2c6fe3e;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git patch to inheritance section --- diff --git a/doc/build/content/adv_datamapping.txt b/doc/build/content/adv_datamapping.txt index 5c43a5b2c2..e2f5f8ffb4 100644 --- a/doc/build/content/adv_datamapping.txt +++ b/doc/build/content/adv_datamapping.txt @@ -457,22 +457,22 @@ A future release of SQLALchemy might better merge the generated UNION into the m 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 @@ Polymorphic: {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}