Indeed, this just seems like a common need.
Mike, is it common enough to warrant going on the session by default?
cheers,
Chris
On 17/06/2013 18:57, Petr Viktorin wrote:
Simply handling NoResultFound should work just fine...
def zero_or_one(query):
try:
return query.one()
except NoResultFound:
return None
On Mon, Jun 17, 2013 at 6:36 PM, Michael Bayer<mike...@zzzcomputing.com> wrote:
On Jun 17, 2013, at 5:33 AM, Wichert Akkerman<wich...@wiggy.net> wrote:
On Jun 17, 2013, at 08:58 , Chris Withers<ch...@simplistix.co.uk> wrote:
Hi All,
I seems to commonly need to do a query which should return zero or one mapped
objects.
.one() isn't what I want as no returned object is ok.
.first() isn't what I want as if my query would return more than one object, I
have the query wrong and so want an exception.
Is there something already available that meets this need?
This will requrie you to run a query which limits the result to max 2 rows so
you can check if more than one result would be returned. I would just create a
simple wrapper function:
def one_optional(query):
rows = query.limit(2).all()
count = len(rows)
if count == 0:
return None
elif count == 1:
return rows[0]
else:
raise RuntimeError('More than one result found.')
you could even drop the limit(2) so that the query renders more simply if
eagerloads are present.
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/groups/opt_out.
--
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/groups/opt_out.