summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2006-10-19 07:20:52 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2006-10-19 07:20:52 +0000
commit6a38b502e08dae3430328e2eff557c638e042373 (patch)
tree4c1eda013aec8d7d8a6b751543accb434a63e1a1 /lib
parent2bef6699d35b80bf1e329878f8f6a46134b9dc3d (diff)
downloadsqlalchemy-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.py4
-rw-r--r--lib/sqlalchemy/orm/query.py4
-rw-r--r--lib/sqlalchemy/orm/strategies.py6
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: