code: def export_to_dict(self, recursive=True, include_parent_ref=False,
                         include_defaults=False):
          
          cls = self.__class__
          parent_excludes = {}
          if recursive and not include_parent_ref:
              parent_ref = cls.__mapper__.relationships.get(cls.export_parent)
              if parent_ref:
                  parent_excludes = {c.name for c in parent_ref.local_columns}
          dict_rep = {c.name: getattr(self, c.name)
                      for c in cls.__table__.columns
                      if (c.name in self.export_fields and
                          c.name not in parent_excludes and
                          (include_defaults or (
                              getattr(self, c.name) is not None and
                              (not c.default or
                                  getattr(self, c.name) != c.default.arg))))
                      }
          if recursive:
              for c in self.export_children:
                  # sorting to make lists of children stable
                  dict_rep[c] = sorted(
                      [
                          child.export_to_dict(
                              recursive=recursive,
                              include_parent_ref=include_parent_ref,
                              include_defaults=include_defaults,
                          ) for child in getattr(self, c)
                      ],
                      key=lambda k: sorted(k.items()))
  
          return dict_rep
docs: Export obj to dictionary