2017-06-23 126 views
1

我想從ZODB中刪除引用將來不再存在的類的對象。以下是問題:我可以通過oid找到它,但我不知道它是什麼引用它。所有顯而易見的事情都已經完成 - 我刪除了實際的Plone內容,甚至刪除了歷史存儲。通過oid查找和刪除對象

我做了一個XML導出找到OID,可以在調試器中獲得它:

from ZODB.utils import p64 
>>> ob=app._p_jar[p64(113955)] 
>>> list(ob) 
[<InterfaceClass OFS.interfaces.IFolder>, <InterfaceClass plone.app.contenttypes.interfaces.IFolder>, <InterfaceClass plone.folder.interfaces.IFolder>, <InterfaceClass Products.CMFCore.interfaces._content.IFolderish>, <InterfaceClass Products.GroupSpace.interfaces.IGroupSpace>, <InterfaceClass z3c.relationfield.interfaces.IHasIncomingRelations>, <InterfaceClass z3c.relationfield.interfaces.IHasOutgoingRelations>, <InterfaceClass z3c.relationfield.interfaces.IHasRelations>, <InterfaceClass plone.namedfile.interfaces.IImageScaleTraversable>, <SchemaClass ims.issuetracker.interfaces.IIssue>, <InterfaceClass OFS.interfaces.IItem>, <InterfaceClass zope.container.interfaces.IItemContainer>, <InterfaceClass zope.interface.common.mapping.IItemMapping>, <InterfaceClass plone.app.iterate.interfaces.IIterateAware>, <SchemaClass ims.behaviors.interfaces.modified.ILastModifiedBy>, <InterfaceClass plone.portlets.interfaces.ILocalPortletAssignable>, <InterfaceClass zope.location.interfaces.ILocation>, <InterfaceClass OFS.interfaces.IManageable>, <InterfaceClass Products.CMFCore.interfaces._content.IMinimalDublinCore>, <InterfaceClass Products.CMFCore.interfaces._content.IMutableDublinCore>, <InterfaceClass Products.CMFCore.interfaces._content.IMutableMinimalDublinCore>, <InterfaceClass plone.app.dexterity.behaviors.filename.INameFromFileName>, <InterfaceClass plone.app.content.interfaces.INameFromTitle>, <InterfaceClass App.interfaces.INavigation>, <SchemaClass plone.app.dexterity.behaviors.nextprevious.INextPreviousToggle>, <InterfaceClass OFS.interfaces.IObjectManager>] 

這Products.GroupSpace.interfaces.IGroupSpace類將不復存在。我只是想刪除這個。 「ob」是BTrees.OOBTree.OOBucket的一個實例,但這就是我所知道的 - 儘管我幾乎積極地看到門戶的PersistentComponents,但它仍然比較模糊。

回答