def select(self, cursor, qstring, vals=()):
    "careful: don't pass cursor (it's from decorator)"
    cursor.execute(qstring, vals) # hmm; do I not want to commit at the end of this?
    return cursor.fetchall()