]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Fixed that old inconsistency (person VS employee) in the joined-table inheritance...
authorGaëtan de Menten <gdementen@gmail.com>
Fri, 27 Jul 2007 08:20:34 +0000 (08:20 +0000)
committerGaëtan de Menten <gdementen@gmail.com>
Fri, 27 Jul 2007 08:20:34 +0000 (08:20 +0000)
doc/build/content/adv_datamapping.txt

index 033fb3359490ff4ceeaa63637a8a85fe24d09e1f..b7fae0ff43b24dc963b9ef7cc2eb9047d84f20be 100644 (file)
@@ -623,30 +623,31 @@ Like concrete table inheritance, this can be done non-polymorphically, or with a
     employees = Table('employees', metadata, 
        Column('person_id', Integer, primary_key=True),
        Column('name', String(50)),
-       Column('type', String(30)))
+       Column('type', String(30))
+    )
 
     engineers = Table('engineers', metadata, 
        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('employees.person_id'), primary_key=True),
        Column('manager_data', String(50)),
-       )
+    )
 
-    person_mapper = mapper(Employee, employees)
-    mapper(Engineer, engineers, inherits=person_mapper)
-    mapper(Manager, managers, inherits=person_mapper)
+    employee_mapper = mapper(Employee, employees)
+    mapper(Engineer, engineers, inherits=employee_mapper)
+    mapper(Manager, managers, inherits=employee_mapper)
 
 Polymorphically, joined-table inheritance is easier than concrete, as a simple outer join can usually work:
 
     {python title="Joined Table Inheritance, Polymorphic"}
-    person_join = people.outerjoin(engineers).outerjoin(managers)
+    employee_join = employees.outerjoin(engineers).outerjoin(managers)
 
-    person_mapper = mapper(Person, people, select_table=person_join,polymorphic_on=people.c.type, polymorphic_identity='person')
-    mapper(Engineer, engineers, inherits=person_mapper, polymorphic_identity='engineer')
-    mapper(Manager, managers, inherits=person_mapper, polymorphic_identity='manager')
+    employee_mapper = mapper(Employee, employees, select_table=employee_join, polymorphic_on=employees.c.type, polymorphic_identity='employee')
+    mapper(Engineer, engineers, inherits=employee_mapper, polymorphic_identity='engineer')
+    mapper(Manager, managers, inherits=employee_mapper, polymorphic_identity='manager')
 
 In SQLAlchemy 0.4, the above mapper setup can load polymorphically *without* the join as well, by issuing distinct queries for each subclasses' table.