In which scope does zodb preserve object uniqueness?

The problem I'm having is I have Person-objects in two places, in a set of
persons (root[Person], which is an OOSet) and in name-index (root[(Name,
Person)], which is a OOBTree).

Now if I find people by name from the name index, they seem not to be the
same in the set of all Person-objects...

All the Persons get into the OSet and OOBTree like this: firstly the
created person is just added to the OOSet; then its "index" method is
called which returns a list of tuples -- in my case it's just (from the
objects' point of view) [(self.name, self)]. USing that my db gets the
types of both of them-- Name and Person --and then puts them in the
appropriate index by doing root[(Name, Person)][ name ].update([ prerson
]). And now if I retrieve some person from the name-index, I cannot remove
(by method "remove") them from the OOSet of all persons, because it raises
a KeyError.

Yet if I iter through the set of persons, one of them *is* the one I got
from the name-index... What am I thinking wrongly about?


For more information about ZODB, see the ZODB Wiki:

ZODB-Dev mailing list  -  ZODB-Dev@zope.org

Reply via email to