From 2e5e6ff96cc92f342bc53242703991f915741966 Mon Sep 17 00:00:00 2001 From: Eric Siegerman Date: Mon, 28 Sep 2015 12:08:19 -0400 Subject: Remplement Query.one() in terms of .one_or_none() Thanks to Mike Bayer for suggesting a simpler refactoring. --- lib/sqlalchemy/orm/query.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'lib/sqlalchemy/orm') diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index f0b8969a2..16ead950e 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -2535,16 +2535,15 @@ class Query(object): :meth:`.Query.one_or_none` """ - ret = list(self) - - l = len(ret) - if l == 1: - return ret[0] - elif l == 0: - raise orm_exc.NoResultFound("No row was found for one()") - else: + try: + ret = self.one_or_none() + except orm_exc.MultipleResultsFound: raise orm_exc.MultipleResultsFound( "Multiple rows were found for one()") + else: + if ret is None: + raise orm_exc.NoResultFound("No row was found for one()") + return ret def scalar(self): """Return the first element of the first result or None -- cgit v1.2.1