diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-10-19 07:20:52 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-10-19 07:20:52 +0000 |
| commit | 6a38b502e08dae3430328e2eff557c638e042373 (patch) | |
| tree | 4c1eda013aec8d7d8a6b751543accb434a63e1a1 /lib | |
| parent | 2bef6699d35b80bf1e329878f8f6a46134b9dc3d (diff) | |
| download | sqlalchemy-6a38b502e08dae3430328e2eff557c638e042373.tar.gz | |
- cleanup to the last commit
- added contains_eager() MapperOption, used in conjunction with
instances() to specify properties that should be eagerly loaded
from the result set, using their plain column names by default, or translated
given an custom row-translation function. [ticket:347].
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/sqlalchemy/orm/interfaces.py | 4 | ||||
| -rw-r--r-- | lib/sqlalchemy/orm/query.py | 4 | ||||
| -rw-r--r-- | lib/sqlalchemy/orm/strategies.py | 6 |
3 files changed, 6 insertions, 8 deletions
diff --git a/lib/sqlalchemy/orm/interfaces.py b/lib/sqlalchemy/orm/interfaces.py index 872164d32..8e505bac5 100644 --- a/lib/sqlalchemy/orm/interfaces.py +++ b/lib/sqlalchemy/orm/interfaces.py @@ -72,7 +72,6 @@ class StrategizedProperty(MapperProperty): self._all_strategies[cls] = strategy return strategy def setup(self, querycontext, **kwargs): - print "SP SETUP, KEY", self.key, " STRAT IS ", self._get_context_strategy(querycontext) self._get_context_strategy(querycontext).setup_query(querycontext, **kwargs) def execute(self, selectcontext, instance, row, identitykey, isnew): self._get_context_strategy(selectcontext).process_row(selectcontext, instance, row, identitykey, isnew) @@ -132,7 +131,8 @@ class StrategizedOption(PropertyOption): """a MapperOption that affects which LoaderStrategy will be used for an operation by a StrategizedProperty.""" def process_query_property(self, context, property): - print "HI " + self.key + " " + property.key + context.attributes[(LoaderStrategy, property)] = self.get_strategy_class() + def process_selection_property(self, context, property): context.attributes[(LoaderStrategy, property)] = self.get_strategy_class() def get_strategy_class(self): raise NotImplementedError() diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index a7021d472..222eca5ac 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -273,7 +273,7 @@ class Query(object): def execute(self, clauseelement, params=None, *args, **kwargs): result = self.session.execute(self.mapper, clauseelement, params=params) try: - return self.mapper.instances(result, self.session, with_options=self.with_options, **kwargs) + return self.instances(result, **kwargs) finally: result.close() @@ -283,7 +283,7 @@ class Query(object): session = self.session - context = SelectionContext(self.mapper, session, **kwargs) + context = SelectionContext(self.mapper, session, with_options=self.with_options, **kwargs) result = util.UniqueAppender([]) if mappers: diff --git a/lib/sqlalchemy/orm/strategies.py b/lib/sqlalchemy/orm/strategies.py index 88d7f6c52..84512c5a9 100644 --- a/lib/sqlalchemy/orm/strategies.py +++ b/lib/sqlalchemy/orm/strategies.py @@ -460,20 +460,18 @@ class EagerLoader(AbstractRelationLoader): try: # decorate the row according to the stored AliasedClauses for this eager load, # or look for a user-defined decorator in the SelectContext (which was set up by the contains_eager() option) - if selectcontext.attributes.has_key((EagerLoader, self)): + if selectcontext.attributes.has_key((EagerLoader, self.parent_property)): # custom row decoration function, placed in the selectcontext by the # contains_eager() mapper option - decorator = selectcontext.attributes[(EagerLoader, self)] + decorator = selectcontext.attributes[(EagerLoader, self.parent_property)] if decorator is None: decorated_row = row else: decorated_row = decorator(row) - print "OK! ROW IS", decorated_row else: # AliasedClauses, keyed to the lead mapper used in the query clauses = self.clauses_by_lead_mapper[selectcontext.mapper] decorated_row = clauses._decorate_row(row) - print "OK! DECORATED ROW IS", decorated_row # check for identity key identity_key = self.mapper.identity_key_from_row(decorated_row) except KeyError: |
