diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-03-31 02:25:59 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-03-31 02:25:59 +0000 |
commit | 1a5e65c14f11ea2d88e2a00cea6cbd82f371e385 (patch) | |
tree | 73ccfa9c96954de8c11afe19efb940032166fb6a /lib/sqlalchemy/mapping/mapper.py | |
parent | fc9889280221e2678c5d405e45bec14a6eef5acb (diff) | |
download | sqlalchemy-1a5e65c14f11ea2d88e2a00cea6cbd82f371e385.tar.gz |
Jonas Borgström's fantastic SelectRsults patch that adds dynamic list argument support to the mapper.select() methd. associated unit test tweaks and mapper integration.
Diffstat (limited to 'lib/sqlalchemy/mapping/mapper.py')
-rw-r--r-- | lib/sqlalchemy/mapping/mapper.py | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/sqlalchemy/mapping/mapper.py b/lib/sqlalchemy/mapping/mapper.py index a0de86df4..f8faea855 100644 --- a/lib/sqlalchemy/mapping/mapper.py +++ b/lib/sqlalchemy/mapping/mapper.py @@ -9,6 +9,7 @@ import sqlalchemy.sql as sql import sqlalchemy.schema as schema import sqlalchemy.engine as engine import sqlalchemy.util as util +import util as mapperutil import sync from sqlalchemy.exceptions import * import objectstore @@ -419,7 +420,7 @@ class Mapper(object): e.g. result = usermapper.select_by(user_name = 'fred') """ - return self.select_whereclause(self._by_clause(*args, **params)) + return mapperutil.SelectResults(self, self._by_clause(*args, **params)) def selectfirst_by(self, *args, **params): """works like select_by(), but only returns the first result by itself, or None if no @@ -428,7 +429,7 @@ class Mapper(object): def selectone_by(self, *args, **params): """works like selectfirst_by(), but throws an error if not exactly one result was returned.""" - ret = self.select_by(*args, **params) + ret = list(self.select_by(*args, **params)[0:2]) if len(ret) == 1: return ret[0] raise InvalidRequestError('Multiple rows returned for selectone_by') @@ -491,7 +492,7 @@ class Mapper(object): """works like select(), but only returns the first result by itself, or None if no objects returned.""" params['limit'] = 1 - ret = self.select(*args, **params) + ret = self.select_whereclause(*args, **params) if ret: return ret[0] else: @@ -499,7 +500,7 @@ class Mapper(object): def selectone(self, *args, **params): """works like selectfirst(), but throws an error if not exactly one result was returned.""" - ret = self.select(*args, **params) + ret = list(self.select(*args, **params)[0:2]) if len(ret) == 1: return ret[0] raise InvalidRequestError('Multiple rows returned for selectone') @@ -517,7 +518,7 @@ class Mapper(object): if arg is not None and isinstance(arg, sql.Selectable): return self.select_statement(arg, **kwargs) else: - return self.select_whereclause(arg, **kwargs) + return mapperutil.SelectResults(self, arg, ops=kwargs) def select_whereclause(self, whereclause=None, params=None, **kwargs): statement = self._compile(whereclause, **kwargs) |