summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/mapping/query.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2006-05-05 01:18:55 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2006-05-05 01:18:55 +0000
commita7ba115c3dd536ac75c334838872c3f587a9c2ec (patch)
treecfd6bae1938118e426bccccbdc2031b8bb8dd1ea /lib/sqlalchemy/mapping/query.py
parentdec6e3b80f40c249207642d4fa6e9feca7a5a8c9 (diff)
downloadsqlalchemy-a7ba115c3dd536ac75c334838872c3f587a9c2ec.tar.gz
added from_obj option to select()
Diffstat (limited to 'lib/sqlalchemy/mapping/query.py')
-rw-r--r--lib/sqlalchemy/mapping/query.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/sqlalchemy/mapping/query.py b/lib/sqlalchemy/mapping/query.py
index 8233fba65..2ef23c560 100644
--- a/lib/sqlalchemy/mapping/query.py
+++ b/lib/sqlalchemy/mapping/query.py
@@ -223,14 +223,16 @@ class Query(object):
def _compile(self, whereclause = None, **kwargs):
order_by = kwargs.pop('order_by', False)
+ from_obj = kwargs.pop('from_obj', [])
if order_by is False:
order_by = self.order_by
if order_by is False:
if self.table.default_order_by() is not None:
order_by = self.table.default_order_by()
-
+
if self._should_nest(**kwargs):
- s2 = sql.select(self.table.primary_key, whereclause, use_labels=True, from_obj=[self.table], **kwargs)
+ from_obj.append(self.table)
+ s2 = sql.select(self.table.primary_key, whereclause, use_labels=True, from_obj=from_obj, **kwargs)
# raise "ok first thing", str(s2)
if not kwargs.get('distinct', False) and order_by:
s2.order_by(*util.to_list(order_by))
@@ -243,7 +245,8 @@ class Query(object):
if order_by:
statement.order_by(*util.to_list(order_by))
else:
- statement = sql.select([], whereclause, from_obj=[self.table], use_labels=True, **kwargs)
+ from_obj.append(self.table)
+ statement = sql.select([], whereclause, from_obj=from_obj, use_labels=True, **kwargs)
if order_by:
statement.order_by(*util.to_list(order_by))
# for a DISTINCT query, you need the columns explicitly specified in order