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 -~----------~----~----~----~------~----~------~--~---
