#!/usr/bin/env python from contextlib import closing from collections import namedtuple import pymysql def named_tuple_cursor(cursor): '''Generate rows as named tuple''' column_names = [desc[0] for desc in cursor.description] row_tuple = namedtuple('row_tuple', column_names) # "row_tuple" is internal name of row_tuple class for cursor_row in cursor.fetchall(): yield row_tuple(*cursor_row) with closing(pymysql.connect( host="localhost", db="presidents", user="scripts", passwd="scripts", )) as myconn: c = myconn.cursor() # select first name, last name from all presidents num_recs = c.execute(''' select lastname, firstname from presidents ''') for row in named_tuple_cursor(c): print(row.firstname, row.lastname)