code: def select(clas,pool_or_cursor,**kwargs):
      "note: This returns a generator, not a list. All your expectations will be violated"
      columns = kwargs.pop('columns','*')
      # todo(awinter): write a test for whether eqexpr matters; figure out pg behavior and apply to pgmock
      query="select %s from %s"%(columns,clas.TABLE)
      if kwargs: query+=' where %s'%' and '.join('%s=%%s'%k for k in kwargs)
      return select_or_execute(pool_or_cursor,query,tuple(kwargs.values())f select(clas,pool_or_cursor,**kwargs):
      "note: This returns a generator, not a list. All your expectations will be violated"
      columns = kwargs.pop('columns','*')
      # todo(awinter): write a test for whether eqexpr matters; figure out pg behavior and apply to pgmock
      query="select %s from %s"%(columns,clas.TABLE)
      if kwargs: query+=' where %s'%' and '.join('%s=%%s'%k for k in kwargs)
      return select_or_execute(pool_or_cursor,query,tuple(kwargs.values()))
docs: note: This returns a generator, not a list. All your expectations will be violated