[sqlalchemy] Re: Selecting an ORM from self JOINs and/or from a query with subqueries

2009-06-19 Thread sacha

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

2009-06-19 Thread sacha

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

2009-06-19 Thread sacha

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?

2007-10-03 Thread sacha

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