'Executes a SELECT query on the named table, which may return zero or
more rows, returning the result as a list of dicts.
Filters rows by if value of `column` is in `iterable`.
Args:
txn : Transaction object
table : string giving the table name
column : column name to test for inclusion against `iterable`
iterable : list
keyvalues : dict of column names and values to select the rows with
retcols : list of strings giving the names of the columns to return'

@classmethod
def _simple_select_many_txn(cls, txn, table, column, iterable, keyvalues, retcols):

    if (not iterable):
        return []
    sql = ('SELECT    %s    FROM    %s' % (',    '.join(retcols), table))
    clauses = []
    values = []
    clauses.append(('%s    IN    (%s)' % (column, ','.join(('?' for _ in iterable)))))
    values.extend(iterable)
    for (key, value) in keyvalues.iteritems():
        clauses.append(('%s    =    ?' % (key,)))
        values.append(value)
    if clauses:
        sql = ('%s    WHERE    %s' % (sql, '    AND    '.join(clauses)))
    txn.execute(sql, values)
    return cls.cursor_to_dict(txn)
