Simon Willison’s Weblog

Python generators for database result sets

I’ve read several articles on Python generators now, and I had almost got my head around them, but then I read this: Iterators and Databases by Andy Todd, which demonstrates a simple but intuitive way of using generators to iterate through rows from a database query without having to load all of the rows in to a list in memory first. Brilliant.

Andy links to this article which includes a nice one line summary of why generators exist (generators return iterators):

The motivation behind iterators is twofold. Working with data as sequences is often the most straightforward approach, and a sequence that is processed in linear order often does not need to actually exist all at once.

More on generators:

This is Python generators for database result sets by Simon Willison, posted on 17th June 2003.

Next: Origin of "list comprehension"

Previous: Accesskeys on ALA

Previously hosted at