code: def request(self, query, source='Datastream',
                  fields=None, options=None, symbol_set=None, tag=None):
          
          if self.show_request:
              try:
                  print('Request:' + query)
              except UnicodeEncodeError:
                  print('Request:' + query.encode('utf-8'))
  
          rd = self.client.factory.create('RequestData')
          rd.Source = source
          rd.Instrument = query
          if fields is not None:
              rd.Fields = self.client.factory.create('ArrayOfString')
              rd.Fields.string = fields
          rd.SymbolSet = symbol_set
          rd.Options = options
          rd.Tag = tag
  
          self.last_response = self.client.service.RequestRecord(self.userdata, rd, 0)
  
          return self.last_response
docs: General function to retrieve one record in raw format.
  
             query - query string for DWE system. This may be a simple instrument name
                     or more complicated request. Refer to the documentation for the
                     format.
             source - The name of datasource (default: "Datastream")
             fields - Fields to be retrieved (used when the requester does not want all
                      fields to be delivered).
             options - Options for specific data source. Many of datasources do not require
                       opptions string. Refer to the documentation of the specific
                       datasource for allowed syntax.
             symbol_set - The symbol set used inside the instrument (used for mapping
                          identifiers within the request. Refer to the documentation for
                          the details.
             tag - User-defined cookie that can be used to match up requests and response.
                   It will be returned back in the response. The string should not be
                   longer than 256 characters.