[sqlalchemy] Strange lazy-load query

2011-03-07 Thread Joril
Hi everyone!

I have an object graph like this:

Invoice - Detail (one-to-many with cascade) - Product (many-to-one) -
 VAT (many-to-one)

My problem is that sometimes if I have a Detail and try to read its
Product, the triggered lazy-loading generates a query more complicated
than necessary, having a LEFT OUTER JOIN on the VAT table too... Other
times the lazy-loading query joins only Detail and Product.
I think I'm doing something fishy here.. What could I check, to ensure
that the lazy loading doesn't touch unneeded entities?

Many thanks!

(SQLAlchemy 0.6.6, PGSQL 8.3)

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



Re: [sqlalchemy] Strange lazy-load query

2011-03-07 Thread Michael Bayer
the left outer join means there is a lazy=False or lazy='joinedload' on the 
relationship, or in this case since its sporadic, the parent Invoice is likely 
being loaded with an option like joinedload(Product.vat).The options 
specified in Query get attached to lazy loaders later in the chain, if the 
given joinedload() chain doesn't start from the entity being queried (which is 
probably the case if the query uses joinedload() and not joinedload_all()).   
For those Product objects already in the identity map, this option would not 
take place.


On Mar 7, 2011, at 8:13 AM, Joril wrote:

 Hi everyone!
 
 I have an object graph like this:
 
 Invoice - Detail (one-to-many with cascade) - Product (many-to-one) -
 VAT (many-to-one)
 
 My problem is that sometimes if I have a Detail and try to read its
 Product, the triggered lazy-loading generates a query more complicated
 than necessary, having a LEFT OUTER JOIN on the VAT table too... Other
 times the lazy-loading query joins only Detail and Product.
 I think I'm doing something fishy here.. What could I check, to ensure
 that the lazy loading doesn't touch unneeded entities?
 
 Many thanks!
 
 (SQLAlchemy 0.6.6, PGSQL 8.3)
 
 -- 
 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.
 

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