2010-03-24 2 views

ответ

3

Каждый объект, хранящийся в ZODB действительно имеет уникальный идентификатор, доступный в качестве его _p_oid атрибут после того, как объект был зарегистрирован:

>>> obj._p_oid 

обычных предостережения о первичных ключах применяются - если вам нужен уникальный идентификатор, который вы можете продолжать использовать, даже если вам нужно экспортировать объекты в другую базу данных , вам лучше использовать uuid, которым вы управляете сами. Python имеет uuid-модуль (в stdlib как и Python 2.6), который может генерировать uuids.

+0

спасибо за ур ответ. Я поддерживаю атрибут идентификатора с каждым параметром класса. Но когда я создаю динамические объекты, мне нужно всегда увеличивать его. Мне нужен способ, чтобы значение не превышало значение ZODB – gizgok

+1

Монотонное увеличение идентификаторов в ZODB может быть довольно сложным из-за функции управления множественной совместимостью (MVCC) ZODB. Если вы можете проектировать свое приложение, чтобы избежать необходимости в нем, я бы рекомендовал это. Если вам это нужно, я бы предложил перефразировать ваш вопрос, чтобы конкретно указать, как организовать монотонно увеличивающиеся идентификаторы в ZODB. –

Смежные вопросы