Thanks! That appears to have done it.
Chris Guin
At 05:28 PM 3/27/2008, you wrote:
On Mar 27, 2008, at 3:54 PM, Chris Guin wrote:
Does anyone know where I could find a working example of multiple
levels of inheritance using joined table inheritance?
Right now I have the following class hierarchy - an AspectDetection
and an RFDetection are subclasses of Detection, which in turn is a
subclass of Event. Each of the classes has its own DB table, and an
object can be simply an Event or a Detection. I've tried mapping
these classes together using the following code:
detection_join =
detection.outerjoin(aspect_detection).outerjoin(rf_detection)
event_join = detection_join.outerjoin(event)
if the ultimate base class is Event, then the event table's columns
must be present in every result set. By outerjoining (where outerjoin
is a LEFT OUTER JOIN) detection to event, you dont get Event objects
that are not Detection objects. So event join should be:
event_join=event.outerjoin(detection_join)
Similarly, mapping select_table directly to detection_join for
detection_mapper does not include any columns from the Event table, so
those loads would be failing pretty badly. So for that mapper,
assuming you want all subclasses in one big query, youd want to set
select_table to:
event
.outerjoin
(detection).outerjoin(aspect_detection).outerjoin(rf_detection)
the good news is, 0.4.5 will deprecate select_table and you'll just be
able to say with_polymorphic='*' on all your mappers where you want
a join of all subtables constructed by default - it will do all this
work for you.
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---