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.


Reply via email to