On Feb 11, 2013, at 6:10 PM, Matthew Rich <[email protected]> wrote:
> On Monday, February 11, 2013 5:00:50 PM UTC-6, Michael Bayer wrote:
>
> should be easy enough to create those joins automatically using the
> relationship:
>
> query(School.id,
> func.count(Coordinator.id)).join(School.coordinators).group_by(School.id).having(func.count(Coordinator.id)
> > 1)
>
>
> or you could join() explicitly with a separate target/ON clause, shouldn't be
> necessary though.
>
> Thanks for your reply Mike. I tried exactly that but I get:
>
> AttributeError: type object 'School' has no attribute 'coordinators'
>
> So I went ahead and got rid of the backref from the relationship defined in
> Coordinator and explicitly added the "coordinators" relationship on School
> and now it works. Worth a ticket?
no…. if you want two relationships, link them with back_populates. If you want
to go back to using backref (easier), if your query is the absolutely first
thing you're doing, here are three workarounds:
1. call configure_mappers() explicitly when your program starts, after
the mappings are imported and before you run your query.
2. use a string to join, so that you don't need that symbol until the
Query starts up and configures the mappings:
query(…).join("coordinators").group_by(…)
3. run query() and then the join() in a second step, so that query()
has a chance to configure the mappings:
q = query(…)
q = q.join(School.coordinators)
--
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.