'Fetch many rows, just like DB-API
``cursor.fetchmany(size=cursor.arraysize)``.
If rows are present, the cursor remains open after this is called.
Else the cursor is automatically closed and an empty list is returned.'

def fetchmany(self, size=None):

    try:
        l = self.process_rows(self._fetchmany_impl(size))
        if (len(l) == 0):
            self.close()
        return l
    except Exception as e:
        self.connection._handle_dbapi_exception(e, None, None, self.cursor, self.context)
