2010-03-24 65 views

回答

3

存储在ZODB中的每个对象不具有唯一的ID的所有对象的唯一标识,可访问对象之后其_p_oid属性已经注册:

>>> obj._p_oid 

有关主键通常的警告也适用 - 如果你需要一个唯一的标识符,您可以继续,即使你需要将对象导出到不同的数据库使用,你最好使用自己管理的uuid。 Python有一个uuid模块(在Python 2.6以后的stdlib中)可以生成uuids。

+0

感谢您的答复。我维护每个类参数的Id属性。但是当我创建动态对象时,我需要始终增加它。因此,我需要一种方法,其中值不会在ZODB中被覆盖 – gizgok 2010-04-18 15:15:04

+1

由于ZODB的多版本并发控制(MVCC)功能,在ZODB内单调增加ID会非常棘手。如果你可以设计你的应用程序来避免它的需要,我会建议。如果你确实需要它,我建议你重新提出你的问题,具体是关于如何安排在ZODB中单调递增的ID。 – 2010-04-18 23:07:06