[sqlalchemy] Re: Selecting an ORM from self JOINs and/or from a query with subqueries
Michael, do you mean, that subqueries could not be wrapped into sqlalchemy? what should be the arguments to join() I failed to figure out? how do I reference different instances of seq in fileter() after? Thanks, A On Jun 19, 7:43 am, Michael Bayer mike...@zzzcomputing.com 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 sqlalchemy@googlegroups.com To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~--~~~~--~~--~--~---
[sqlalchemy] Re: Selecting an ORM from self JOINs and/or from a query with subqueries
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 mike...@zzzcomputing.com 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 mike...@zzzcomputing.com 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 sqlalchemy@googlegroups.com To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~--~~~~--~~--~--~---
[sqlalchemy] Re: Selecting an ORM from self JOINs and/or from a query with subqueries
I meant SELECT x.* FROM x JOIN x AS x1 JOIN x AS x2 ... WHERE On Jun 19, 1:55 pm, sacha sa...@myxomop.com wrote: Same about multi-cartesian product can I use query(X).join() for SELECT * FROM x JOIN x JOIN x . ? --~--~-~--~~~---~--~~ 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 sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~--~~~~--~~--~--~---
[sqlalchemy] non-blocking row locks?
Hi, I am attempting to implement a job queue in a postgres database. There is a simple job table in which each row represents a job to be run. There are multiple dispatcher threads that pull jobs off the queue and run them. I need concurrency control to prevent multiple threads from dispatching the same job. I think the most elegant place to do this is in the database itself using row locking (rather than with OS or application concurrency control mechanisms, which would restrict the code to a single process or host). I can get and lock the next job using job = session.query(Job).with_lockmode('update').first() However, another thread running the same query would presumably block until the first releases the lock. Is there a non-blocking update mode, such that the second thread returns immediately (and I can look for a different job), or some way for the query to exclude locked jobs? Apologies if this is a sqlalchemy 101 (or SQL 101) question, I'm new to it all and I've not been able to find answers via FAQs/google. --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---