well you example here seems like it's not literal, do you mean to use and_() ?  
I see a tuple there and an assignment.  It shouldn't be trying to do an 
auto-join like that so it seems like join() isn't being called correctly.



On Apr 26, 2013, at 7:42 PM, Jonathan Vanasco <[email protected]> wrote:

> I thought it should work too, but I'm getting:
> 
>     "InvalidRequestError: Could not find a FROM clause to join from.  Tried 
> joining to <class 'app.models.Person2Topic'>, but got: Can't find any foreign 
> key relationships between 'message' and 'person_2_topic'."
> 
> If i have time this weekend I'll look into this.  If i don't find a bug in my 
> code, I'll post a reproducable test-case on github.
> 
> 
> 
> On Friday, April 26, 2013 7:18:24 PM UTC-4, Michael Bayer wrote:
> 
> On Apr 26, 2013, at 7:10 PM, Jonathan Vanasco <[email protected]> wrote: 
> 
> > Given 
> >         class Person: 
> >                 id 
> >                  
> >         class Topic: 
> >                 id 
> >          
> >         class Person2Topic : 
> >                 id 
> >                 topic_id  - fkeys topic(id) 
> >                 person_id - fkeys person(id) 
> >          
> >         class Message: 
> >                 id 
> >                 person_id_author - fkeys person(id) 
> >                 topic_id - fkeys topic(id) 
> >          
> >          
> >          
> > I wanted to select by joining the Person2Topic table directly, with a 
> > filter 
> > 
> >         query( Message )\ 
> >                 join(  Person2Topic ,( 
> >                                         Message.topic_id == 
> > Person2Topic.topic_id , 
> >                                         Person2Topic.person_id = 1   
> >                 ) 
> > 
> > This generates errors, because sqlalchemy doesn't have an fkey on 
> > Message.topic_id = Person2Topic.topic_id 
> >          
> > i can only figure out how to do query by doing intermediary joins 
> > 
> >         query( Message )\ 
> >                 join( Topic , ( Message.topic_id == Topic.id ) )\ 
> >                 join(  Person2Topic ,( Topic.id = Person2Topic.topic_id )\ 
> >                 filter( Person2Topic.person_id = 1 ) 
> > 
> > is it possible to do a select like I originally wanted ? 
> 
> you can write out the join condition as you are (not sure what's the downside 
> there), or if you're looking for a relationship() to do it you'd need to set 
> up a primaryjoin + foreign_keys in the relationship() to join as you want.  
> I'm not sure what other options would be here. 
> 
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>  
>  

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to