![]() ![]() |
Sie sind hier: FAQ > Zope FAQ > Programmentwicklung unter Zope > Persistenz bei Objekten mit ver�nderbaren (mutable) Datentypen als Attribute Persistenz bei Objekten mit ver�nderbaren (mutable) Datentypen als AttributeFrage:
Wieso werden �nderungen an einem Dictionary als Attribute einer Instanz nicht persistent gespeichert?
Antwort:Bei der �nderung von Attributen einer Objektinstanz mu� darauf geachtet werden, ob das ge�nderte Attribute unver�nderbar (immutable:Strings, Tuple) ist oder ver�nderbar (mutable: Dicts, Listen). Die ZODB kann implementierungsbedingt nicht merken, wenn man in einer Transaktion z.B. ein Dict oder eine Liste �ndert. D.h. die �nderungen werden am Transaktionsende nicht in der ZODB gespeichert, d.h. solche �nderungen �berstehen einen Neustart nicht. Der ZODB mu� signalisiert werden, dass sich die Attribute ge�ndert haben: class foobar: def __init__(self): self.d = {} def some_method(self, k, v): self.d[k] = v self._p_changed = 1 Das Setzen von _p_changed = 1 signalisiert der ZODB die Attribute in die ZODB zur�ckzuschreiben. Referenzen:
Rubriken: Entwickler FAQ angelegt von: ajung, Letzte �nderung: 11.11.2003 17:30 Uhr |