通过oid查找和删除对象

2024-05-16 21:00:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从ZODB中删除引用将来不再存在的类的对象。问题是:我可以通过oid找到它,但我不知道是什么在引用它。所有显而易见的事情都已经完成了——我删除了实际的Plone内容,甚至删除了历史存储。在

我做了一个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中,但这仍然相当模糊。在


Tags: z3czopeappplonecontentinterfacesproductsofs