def METHOD_NAME(self, isolation_level=None):
    conn = self.get()
    try:
        if isolation_level is not None:
            if conn.isolation_level == isolation_level:
                isolation_level = None
            else:
                conn.set_isolation_level(isolation_level)
        yield conn
    except:
        if conn.closed:
            conn = None
            self.closeall()
        else:
            conn = self._rollback(conn)
        raise
    else:
        if conn.closed:
            raise OperationalError("Cannot commit because connection was closed: %r" % (conn, ))
        conn.commit()
    finally:
        if conn is not None and not conn.closed:
            if isolation_level is not None:
                conn.set_isolation_level(isolation_level)
            self.put(conn)