diff options
Diffstat (limited to 'lib/sqlalchemy/sql.py')
-rw-r--r-- | lib/sqlalchemy/sql.py | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/lib/sqlalchemy/sql.py b/lib/sqlalchemy/sql.py index 6ea444b29..bae42022e 100644 --- a/lib/sqlalchemy/sql.py +++ b/lib/sqlalchemy/sql.py @@ -713,7 +713,7 @@ class Select(Selectable): self.use_labels = use_labels self.id = "Select(%d)" % id(self) self.name = None - self.whereclause = whereclause + self.whereclause = None self._engine = engine self.rowid_column = None @@ -729,8 +729,8 @@ class Select(Selectable): self.append_column(c) if whereclause is not None: - self.set_whereclause(whereclause) - + self.append_whereclause(whereclause) + for f in from_obj: self.append_from(f) @@ -757,25 +757,24 @@ class Select(Selectable): else: co._make_proxy(self) - def set_whereclause(self, whereclause): + def append_whereclause(self, whereclause): if type(whereclause) == str: - self.whereclause = TextClause(whereclause) + whereclause = TextClause(whereclause) class CorrelatedVisitor(ClauseVisitor): def visit_select(s, select): for f in self.froms.keys(): select.clear_from(f) select.issubquery = True - self.whereclause.accept_visitor(CorrelatedVisitor()) - - self.whereclause._process_from_dict(self.froms, False) - def append_whereclause(self, clause): + whereclause.accept_visitor(CorrelatedVisitor()) + whereclause._process_from_dict(self.froms, False) + if self.whereclause is not None: - self.whereclause = and_(self.whereclause, clause) + self.whereclause = and_(self.whereclause, whereclause) else: - self.whereclause = clause - + self.whereclause = whereclause + def clear_from(self, id): self.append_from(FromClause(from_name = None, from_key = id)) |