The problem was solved by using a join query and then specifying both foreign keys and the secondary argument to the relation.
Many thanks, Nathan secondary = sentences_table.join(tag_table.join(processed_tags_table, processed_tags_table.c.tag_id == tag_table.c.tag_id), sentences_table.c.sentence_id == tag_table.c.sentence_id) mapper(Zone, zones_table, properties={ "species":relation(Name, primaryjoin=zones_table.c.zone_id == secondary.c.sentences_zone_id, foreign_keys = [ secondary.c.sentences_zone_id, names_table.c.name_id ], secondary=processed_tags_normalised_table, viewonly=True) 2009/5/19 Michael Bayer <mike...@zzzcomputing.com>: > > > On May 18, 2009, at 8:06 PM, Michael Bayer wrote: > >> >> if you want to make a chained join like that, use just primaryjoin(), >> dont use "secondary", and set viewonly=True. > > I might be off on the "dont use secondary" advice. if you do use > "secondary", "secondary" is the "middle" table, so in this case it > seems like it would be "tags_table" and the target would be > "processed_tag_table". > >> As an alternative to the above approach, you can also try using >> traditional relations between each class and use the association proxy >> to simplify access from one end to the other. > > this advice stlll holds though (as does use viewonly=True). > > > > > --~--~---------~--~----~------------~-------~--~----~ 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 sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---