asrenzo wrote: > > Here is a primaryjoin, secondaryjoin I tried without success: > > neighbors = relation("Place", primaryjoin=("Place.id == > neighbors_table.place_id"), secondaryjoin= > ("neighbors_table.neighbor_id == Place.id"), > secondary="neighbors_table") > > and the error is: > > sqlalchemy.exc.InvalidRequestError: When compiling mapper Mapper|Shop| > shops, expression 'Shop.id == neighbours_table.shop_id' failed to > locate a name ("name 'neighbours_table' is not defined"). If this is a > class name, consider adding this relation() to the <class > 'shoplocator.orm.shop.Shop'> class after both dependent classes have > been defined. > > Which I can't understand because neighbors table is defined before the > Place class definition.
the first strange thing is the message says "Shop.id" but the string you are showing says "Place.id". Anyway, the Table object "neighbors_table" is not part of the locals() when the string expressions are evaluated. therefore just don't use string arguments for primaryjoin/secondaryjoin/secondary, use the expression directly (i.e. secondary=neighbors_table, primaryjoin=id==neighbors_table.c.neighbor_id). --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---