asyncpg
asyncpg copied to clipboard
Explain iterable cursors in the documentation
When running
await conn.cursor(sql, prefetch=100)
I am getting error
asyncpg.exceptions._base.InterfaceError: prefetch argument can only be specified for iterable cursor
Looking into the documentation, I cannot find anything about iterable cursors. How do I declare them?
Here's the relevant part of the documentation: https://magicstack.github.io/asyncpg/current/api/index.html#cursors.
Iterable cursors are cursors that are used directly as iterator rather than an object that calling fetch(), so
# cursor with manual control
# prefetch doesn't make sense, because
# you specify the number of rows fetched explicitly
# every time
cursor = await conn.cursor(sql)
rows = await cursor.fetch(100)
# iterable cursor
# runs "fetch(100)" behind the scenes on every
# 100th iteration.
async for record in conn.cursor(sql, prefetch=100):
...