from sqlalchemy.orm.properties import ColumnProperty, RelationshipProperty def get_prop_names(obj, exclude=[]): local, remote = [], [] for p in obj.__mapper__.iterate_properties: if p.key not in exclude: if isinstance(p, ColumnProperty): local.append(p.key) if isinstance(p, RelationshipProperty): remote.append(p.key) return local, remote