code: def query(self, query, *parameters, **kwargs):
          
          cursor = self._cursor()
          try:
              self._execute(cursor, query, parameters or None, kwargs)
              if cursor.description:
                  column_names = [column.name for column in cursor.description]
                  res = [Row(zip(column_names, row)) for row in cursor.fetchall()]
                  cursor.close()
                  return res
          except:
              cursor.close()
              raise
docs: Returns a row list for the given query and parameters.