2010-03-24 5 views

Répondre

3

Chaque objet stocké dans la ZODB ne possède un identifiant unique, accessible son attribut _p_oid après que l'objet a été enregistré:

>>> obj._p_oid 

les mises en garde habituelles sur les clés primaires appliquent - si vous avez besoin d'un identifiant unique que vous pouvez continuer à utiliser même si vous avez besoin d'exporter vos objets à une autre base de données , tu ferais mieux d'utiliser un uuid que tu gères toi-même. Python a un module uuid (dans stdlib à partir de Python 2.6) qui peut générer des uuids.

+0

Merci pour votre réponse.Je maintiens un attribut Id avec chaque paramètre de classe.Mais quand je crée des objets dynamiques, je dois toujours l'incrémenter.Ainsi j'ai besoin d'un moyen où la valeur ne soit pas surchargée dans ZODB – gizgok

+1

Avoir des identifiants croissants monotones dans ZODB peut être assez compliqué en raison de la fonction de contrôle de concurrence multi-version (MVCC) de ZODB. Si vous pouvez concevoir votre application pour éviter le besoin, je le recommande. Si vous en avez besoin, je vous suggérerais de reformuler votre question de façon spécifique sur la façon d'organiser des identifiants monotones dans la ZODB. –