diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-04-20 16:17:52 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-04-20 16:17:52 +0000 |
| commit | 952e9cd3ffb37ebf8eeb1a773a9a5c4bbc3fb06c (patch) | |
| tree | 4cdb4103f46d1accaf5af70b381c1ad39fbe91e1 /lib/sqlalchemy | |
| parent | b9c148d5be073df4b048aba38df5912b5417077d (diff) | |
| download | sqlalchemy-952e9cd3ffb37ebf8eeb1a773a9a5c4bbc3fb06c.tar.gz | |
more comprehensive query docs
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/orm/query.py | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index fe7595b9d..9eec1bc0e 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -119,8 +119,9 @@ class Query(object): return instance def get_by(self, *args, **params): - """Return a single object instance based on the given - key/value criterion. + """Like ``select_by()``, but only return the first + as a scalar, or None if no object found. + Synonymous with ``selectfirst_by()``. The criterion is constructed in the same way as the ``select_by()`` method. @@ -213,9 +214,9 @@ class Query(object): return clause def selectfirst_by(self, *args, **params): - """Like ``select_by()``, but only return the first result by - itself, or None if no objects returned. Synonymous with - ``get_by()``. + """Like ``select_by()``, but only return the first + as a scalar, or None if no object found. + Synonymous with ``get_by()``. The criterion is constructed in the same way as the ``select_by()`` method. @@ -250,8 +251,12 @@ class Query(object): return self.count(self.join_by(*args, **params)) def selectfirst(self, arg=None, **kwargs): - """Like ``select()``, but only return the first result by - itself, or None if no objects returned. + """Query for a single instance using the given criterion. + + Arguments are the same as ``select()``. In the case that + the given criterion represents ``WHERE`` criterion only, + LIMIT 1 is applied to the fully generated statement. + """ if isinstance(arg, sql.FromClause) and arg.supports_execution(): @@ -265,11 +270,20 @@ class Query(object): return None def selectone(self, arg=None, **kwargs): - """Like ``selectfirst()``, but throw an error if not exactly - one result was returned. - """ + """Query for a single instance using the given criterion. + + Unlike ``selectfirst``, this method asserts that only one + row exists. In the case that the given criterion represents + ``WHERE`` criterion only, LIMIT 2 is applied to the fully + generated statement. - ret = list(self.select(arg, **kwargs)[0:2]) + """ + + if isinstance(arg, sql.FromClause) and arg.supports_execution(): + ret = self.select_statement(arg, **kwargs) + else: + kwargs['limit'] = 2 + ret = self.select_whereclause(whereclause=arg, **kwargs) if len(ret) == 1: return ret[0] elif len(ret) == 0: |
