PickleType с изменяемым отслеживанием в SqlAlchemy

У меня есть проект, в котором я хотел бы хранить большую структуру (вложенные объекты) в реляционном БД (Postgres). Это'часть большей структуры, и я недействительно не волнует формат сериализации - яя рад, что это капля в столбце - яЯ просто хотел бы быть в состоянии сохранить и восстановить его довольно быстро.

Для моих целей SQLAlchemy PickleType в основном выполняет свою работу. У меня проблема в том, что яМне бы хотелось, чтобы грязные проверки работали (то, для чего используются изменяемые типы). Я'Мне бы хотелось, чтобы они работали не только, если я изменю информацию в путях, но также и в границах (которые усаживаются на другой уровень вниз). Я '

class Group(Base):
    __tablename__ = 'group'

    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    paths = Column(types.PickleType)

class Path(object):
    def __init__(self, style, bounds):
        self.style = style
        self.bounds = bounds

class Bound(object):
    def __init__(self, l, t, r, b):
        self.l = l
        self.t = t
        self.r = r
        self.b = b

# this is all fine
g = Group(name='g1', paths=[Path('blah', Bound(1,1,2,3)),
                            Path('other_style', Bound(1,1,2,3)),])
session.add(g)
session.commit()

# so is this
g.name = 'g2'
assert g in session.dirty
session.commit()

# but this won't work without some sort of tracking on the deeper objects
g.paths[0].style = 'something else'
assert g in session.dirty # nope

мы поиграли с изменчивыми типами, пытаясь заставить его работать, но покамне не повезло. В других местах я использую изменяемые типы для столбца json, что хорошо - таким образом, который кажется более простым, потому что с этими классами вам также нужно отслеживать изменения в объектах внутри объектов.

Любые мысли приветствуются.

Ответы на вопрос(1)

Ваш ответ на вопрос