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.