diff options
| author | Michael Trier <mtrier@gmail.com> | 2008-11-26 19:44:04 +0000 |
|---|---|---|
| committer | Michael Trier <mtrier@gmail.com> | 2008-11-26 19:44:04 +0000 |
| commit | fc779a83554374d88d4cbda4361c118ff878d9e9 (patch) | |
| tree | 5adb9b35a2236c61d2df0f6f65c21e61d4d75b4a /lib/sqlalchemy | |
| parent | 7ea7e0422d2aa47c85fbe891c57144561a0ad3e2 (diff) | |
| download | sqlalchemy-fc779a83554374d88d4cbda4361c118ff878d9e9.tar.gz | |
Refactored the entity setup code in Query so that it is not duplicated in several places.
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/orm/query.py | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index d88876312..4bff81d67 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -83,14 +83,18 @@ class Query(object): self._only_load_props = None self._refresh_state = None self._from_obj = None - self._entities = [] self._polymorphic_adapters = {} self._filter_aliases = None self._from_obj_alias = None self.__currenttables = set() + self._set_entities(entities) + def _set_entities(self, entities, entity_wrapper=None): + if entity_wrapper is None: + entity_wrapper = _QueryEntity + self._entities = [] for ent in util.to_list(entities): - _QueryEntity(self, ent) + entity_wrapper(self, ent) self.__setup_aliasizers(self._entities) @@ -528,10 +532,7 @@ class Query(object): self._limit = self._offset = None self.__set_select_from(fromclause) if entities: - self._entities = [] - for ent in entities: - _QueryEntity(self, ent) - self.__setup_aliasizers(self._entities) + self._set_entities(entities) _from_self = from_self @@ -541,10 +542,7 @@ class Query(object): if not columns: return iter(()) q = self._clone() - q._entities = [] - for column in columns: - _ColumnEntity(q, column) - q.__setup_aliasizers(q._entities) + q._set_entities(columns, entity_wrapper=_ColumnEntity) if not q._yield_per: q._yield_per = 10 return iter(q) |
