docs: def update_by_uid(self, uid, data):
          """Update a row with the given data.
  
          Parameters
          ----------
          uid : int
              The UID of the row to update.
  
          data : :obj:`dict`
              A dictionary mapping keys (header strings) to values.
  
          Raises
          ------
          Exception
              If the value for a given header is not of the appropriate type.
          """
          row = self._table[uid+1]
          for key, val in data.items():
              if key == '_uid' or key == '_default':
                  continue
              if key not in self._headers:
                  logging.warn("Unknown column name: {0}".format(key))
                  continue
              if not isinstance(val, CSVModel._KNOWN_TYPES_MAP[self._headers_types[key]]):
                  raise Exception('Data type mismatch for column {0}. Expected: {1}, got: {2}'.format(key,
                                                          CSVModel._KNOWN_TYPES_MAP[self._headers_types[key]], type(val)))
              row[key] = val
          self._save()