I really want to get a clear vision.

So, I have a table x and mapped class X.
I can use query(X) for simple queries, can I query(X) for structured
ones like
SELECT * FROM x WHERE x.a IN (SELECT ....)
?

Same about multi-cartesian product can I use query(X).join(....)
for SELECT * FROM x JOIN x JOIN x .....
?

All examples for the latter involve additional tables.


On Jun 19, 12:03 pm, "Michael Bayer" <[email protected]> wrote:
> sacha wrote:
>
> > Michael,
>
> > do you mean, that subqueries could not be wrapped into sqlalchemy?
>
> you talked about "mapping" to a select statement.  "mapping" means this:
>
> m = mapper(MyClass, someselectable)
>
> mapping like the above is usually done against individual tables, and
> usually once per class per application.  You can do it against select()
> statements but this is usually unnecessary.  You can also make multiple
> mappers for a single class in an ad-hoc way, but again this is an ancient
> use case that is much better addressed by using the Query object as
> needed.
>
> > what should be the arguments to join() I failed to figure out? how do
> > I reference different instances of seq in fileter() after?
>
> Usually you use query.join().   Self referential queries require an alias
> for each join target.  There is an example 
> athttp://www.sqlalchemy.org/docs/05/ormtutorial.html#using-aliases.  Also
> the example I mentioned earlier in examples/elementtree/optimized_ai.py
> shows exactly a dynamically-constructed self-referential join.
>
>
>
> > Thanks,
> > A
>
> > On Jun 19, 7:43 am, "Michael Bayer" <[email protected]> wrote:
>
> >> you can map to any select(), but since the statement here is a runtime
> >> thing just map to the "seq" table normally and use Query as needed to
> >> construct the joins and filter criterion.   If you're looking to
> >> automate
> >> adding N joins, just build a function that calls query.join() the
> >> appropriate number of times.   For an example of a completely different
> >> use case where a self-referential query.join() is being called an
> >> arbitrary number of times, see the elementtree/optimized_al.py example
> >> in
> >> the distribution.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to