cursor.fetchall() vs list(cursor) in Python -
both methods return list of returned items of query, did miss here? or have identical usages indeed? differences performance wise?
if using default cursor, mysqldb.cursors.cursor
, the entire result set stored on client side (i.e. in python list) time cursor.execute()
completed.
therefore, if use
for row in cursor:
you not getting reduction in memory footprint. entire result set has been stored in list (see self._rows
in mysqldb/cursors.py).
however, if use sscursor or ssdictcursor:
import mysqldb import mysqldb.cursors cursors conn = mysqldb.connect(..., cursorclass=cursors.sscursor)
then the result set stored in server, mysqld. can write
cursor = conn.cursor() cursor.execute('select * hugetable') row in cursor: print(row)
and rows fetched one-by-one server, not requiring python build huge list of tuples first, , saving on memory.
otherwise, others have stated, cursor.fetchall()
, list(cursor)
same.
Comments
Post a Comment