I thing its this: "
Note cursor <http://initd.org/psycopg/docs/cursor.html#cursor> objects are iterable, so, instead of calling explicitly fetchone() <http://initd.org/psycopg/docs/cursor.html#cursor.fetchone> in a loop, the object itself can be used: >>> cur.execute("SELECT * FROM test;")>>> for record in cur:... print >>> record...(1, 100, "abc'def")(2, None, 'dada')(3, 42, 'bar') Changed in version 2.4: iterating over a named cursor <http://initd.org/psycopg/docs/usage.html#server-side-cursors> fetches itersize <http://initd.org/psycopg/docs/cursor.html#cursor.itersize> records at time from the backend. Previously only one record was fetched per roundtrip, resulting in a large overhead. " On Tue, May 15, 2018 at 1:04 PM, Ian Zimmerman <i...@very.loosely.org> wrote: > On 2018-05-14 21:12, Adrian Klaver wrote: > > > Because you are doing fetchall(). That is going to fetch a list of row > > tuples. Either iterate over that list or iterate over the cursor: > > > > for row in cur_p: > > print(row) > > > > For more info see: > > http://initd.org/psycopg/docs/cursor.html > > Where does that webpage say that I can use the cursor itself for > iteration? I can't find it there. (OTOH it is clearly documented for > the sqlite3 library). > > Until now, with psycopg2 I have done it like this: > > cur.execute(stmt) > results = iter(cur.fetchone, None) > for r in results: > ... > > -- > Please don't Cc: me privately on mailing lists and Usenet, > if you also post the followup to the list or newsgroup. > To reply privately _only_ on Usenet and on broken lists > which rewrite From, fetch the TXT record for no-use.mooo.com. > >