On Tue, 24 Jun 2008 18:22:49 -0700 (PDT) bukzor <[EMAIL PROTECTED]> wrote:
> The Query.join() documentations says: > def join(self, prop, id=None, aliased=False, from_joinpoint=False) > 'prop' may be one of: > * a class-mapped attribute, i.e. Houses.rooms > > What exactly counts as class-mapped? I've set up a ForeignKey in my > Files table as well as a backref relation in my Projects table, but > none of these work: > > print session.query(File).join(Project).filter_by(project='mario', > tapeout='sa11').one() > print > session.query(File).join(Project.files).filter_by(project='mario', > tapeout='sa11').one() > print session.query(File).join(Project.id).filter_by(project='mario', > tapeout='sa11').one() > print > session.query(File).join(File.project).filter_by(project='mario', > tapeout='sa11').one() > print > session.query(File).join(File.project_id).filter_by(project='mario', > tapeout='sa11').one() > > They all fail with: > sqlalchemy.exceptions.InvalidRequestError: Mapper 'Mapper|File|files' > has no property '<sqlalchemy.orm.attributes.InstrumentedAttribute > object at 0x2a9a283650>' > > It seems like .join(Project) should 'just work' after the information > I put in the sytem, but I don't know much... > > If there's some documentation that makes this clear, feel free to just > link it. > If you want more code, let me know what to copy/paste. The ORM tutorial [1] is a little more instructive here, what join() actually wants is a string with the name of the relation you put on (in this case) File's mapper. I'll assume it's something like properties = { ... 'project': relation(Project), ...} in which case you want join('project'). SA's rationale for doing it this way is that you can do things like setting up multiple relations from File to Project, and tweak the parameters on each relation to get different behavior, without the joins being ambiguous. [2] has an example of a setup like this. > Thanks! > --Buck HTH -Kyle [1] http://sqlalchemy.org/docs/04/ormtutorial.html#datamapping_joins [2] http://sqlalchemy.org/docs/04 /mappers.html#advdatamapping_relation_customjoin_multiplejoin --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---