Anand's solution is correct, but beware if you're using sqlite that it won't work because of a limitation within the python sqlite driver. All other supported databases should work correctly.
On Oct 5, 9:44 am, Anand Chitipothu <[email protected]> wrote: > 2011/10/5 Bikes At Work Inc. <[email protected]>: > > > > > > > > > > > I would like to select the first row of a query from a table. This will > > work if the query returns valid data: > > > result = db.select('tablename', where='id=%s' % id)[0] > > > but throws an IndexError if the query returns an empty dataset. > > > I can do this: > > try: > > result = db.select('tablename', where='id=%s' % id)[0] > > (...do stuff with result...) > > except IndexError: > > (...handle error...) > > > but that seems a little inelegant. > > > I also tried this: > > > result = db.select('tablename', where='id=%s' % id) > > if len(result.list()) > 0: > > (...do stuff with result...) > > > but that destroys the first iterator so I can't use the result. > > > Is there a better way to handle this? Ideally, I would like db.select() to > > just return "None" if there is no result :) > > You can just do this: > > if result: > .... -- You received this message because you are subscribed to the Google Groups "web.py" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/webpy?hl=en.
