> The twist is that I've spread out my tables and ORM classes across
> several files. I've tried to keep it so that I don't have circular
> dependencies. That means I've defined Merchant first, and then Deal
> later, in separate files

To avoid problems with imports and dependencies you can pass strings
to the relationship function instead of the actual classes:

mapper(Deal, deals, properties=dict(
      merchant=relationship('Merchant', backref='deals'),
  ))

This greatly simplifies everything if you split your classes into
separate files.

Regarding 'available_deals', 'deleted_deals' etc. - the approach with
properties is sub-optimal. Consider a merchant having thousands of
deals, only a few of which are available - the method would have to
fetch all those deals only to discard most of them. Also, that won't
work with eager loading. The optimal way would be to make SA to
generate a query like "SELECT ... FROM Deals WHERE ... AND deleted=1"
which would return only the records we're interested in. I'm sure it's
possible but I'll leave it to you to find it in SA docs :) When you
find it please post it here :)

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalch...@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.

Reply via email to