On Sat, Jan 30, 2016 at 7:22 PM, Frank Millman <fr...@chagford.com> wrote: > We had a recent discussion about the best way to do this, and ChrisA > suggested the following, which I liked - > > cur.execute('SELECT ...) > try: > row = next(cur) > except StopIteration: > # row does not exist > else: > try: > next_row = next(cur) > except StopIteration: > # row does exist > else: > # raise exception > > Now that I have gone async, I want to do the same with an asynchronous > iterator.
Here's a crazy option. (Assuming that a row can't be None. If not, use a unique sentinel object.) cur.execute(whatever) have_row = None async for row in cur: if have_row is not None: raise TooManyRows have_row = row if have_row is None: raise NoRowFound It's kinda abusing the loop construct, but it'd work. Alternatively, you could call the dunder method directly, but that feels dirty. Dunders are for defining, not calling. ChrisA -- https://mail.python.org/mailman/listinfo/python-list