Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #102292 > unrolled thread
| Started by | "Frank Millman" <frank@chagford.com> |
|---|---|
| First post | 2016-01-30 12:51 +0200 |
| Last post | 2016-01-30 12:51 +0200 |
| Articles | 1 — 1 participant |
Back to article view | Back to comp.lang.python
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: Cannot step through asynchronous iterator manually "Frank Millman" <frank@chagford.com> - 2016-01-30 12:51 +0200
| From | "Frank Millman" <frank@chagford.com> |
|---|---|
| Date | 2016-01-30 12:51 +0200 |
| Subject | Re: Cannot step through asynchronous iterator manually |
| Message-ID | <mailman.120.1454151091.2338.python-list@python.org> |
"Chris Angelico" wrote in message
news:CAPTjJmoAmVNTCKq7QYaDRNQ67Gcg9TxSXYXCrY==S9Djjna_rA@mail.gmail.com...
>
> On Sat, Jan 30, 2016 at 7:22 PM, Frank Millman <frank@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
>
Not so crazy :-) If Ian doesn’t come up with a better idea I will run with
it.
Here is a slight variation - just variable name changes really, but I think
it is slightly easier to read -
found = False
async for row in cur:
if found:
raise TooManyRows
found = True
if found:
process row
else:
no rows found
Frank
Back to top | Article view | comp.lang.python
csiph-web