Fixed #2662 -- Changed dictfetchmany and dictfetchall to return iterators,

rather than a list, in order to save memory. Patch from Simon Willison.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@3783 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Malcolm Tredinnick 2006-09-22 02:36:50 +00:00
parent 4b5f0e2c87
commit 4f63ce5b4a
1 changed files with 4 additions and 2 deletions

View File

@ -110,9 +110,11 @@ def dictfetchone(cursor):
def dictfetchmany(cursor, number): def dictfetchmany(cursor, number):
"Returns a certain number of rows from a cursor as a dict" "Returns a certain number of rows from a cursor as a dict"
desc = cursor.description desc = cursor.description
return [_dict_helper(desc, row) for row in cursor.fetchmany(number)] for row in cursor.fetchmany(number):
yield _dict_helper(desc, row)
def dictfetchall(cursor): def dictfetchall(cursor):
"Returns all rows from a cursor as a dict" "Returns all rows from a cursor as a dict"
desc = cursor.description desc = cursor.description
return [_dict_helper(desc, row) for row in cursor.fetchall()] for row in cursor.fetchall():
yield _dict_helper(desc, row)