#NEWLINE# def RangePrimaryKeyValues( self , start_key , end_key , select = None ) : #NEWLINE# #INDENT# 'Return rows between start_key (inclusive) and end_key (inclusive).\n\n    Args:\n      start_key: (dict) PRIMARY KEY value that identifies the first row.\n      end_key: (dict) PRIMARY KEY value that identifies the last row.\n      select: (str) The values you want to select from this table.  If None,\n              it defaults to the columns that make up the primary key.\n    Returns:\n      A list of row objects (dicts).\n      Returns None if no records found in table.\n    ' #NEWLINE# attrs = self . _attrs . copy ( ) #NEWLINE# attrs [ 'where' ] = self . GenerateRangeWhere ( start_key , end_key ) #NEWLINE# attrs [ 'select' ] = ( select or self . _PrimaryKeyForSelect ( ) ) #NEWLINE# sql = 'SELECT %(select)s FROM %(db)s.%(table)s FORCE INDEX (PRIMARY) WHERE %(where)s' #NEWLINE# res = self . _dbh . ExecuteOrDie ( ( sql % attrs ) ) #NEWLINE# if res : #NEWLINE# #INDENT# return res