跳转到主要内容

ZODB浏览器

项目描述

buildstatus appveyor coverage

ZODB浏览器允许您检查存储在ZODB中的持久对象,查看它们的属性以及对其进行的更改历史。

作为独立项目使用

使用zc.buildout将所有依赖项安装到源树中

python bootstrap.py
bin/buildout

运行bin/zodbbrowser,指定文件名或ZEO地址

bin/zodbbrowser /path/to/Data.fs
bin/zodbbrowser --zeo localhost:9080
bin/zodbbrowser --zeo /path/to/zeosock

如果您没有备用的Data.fs用于测试,您可以使用仅包含最基本的Zope 3脚手架的新空文件创建一个。

bin/zodbbrowser empty.fs --rw

在网页浏览器中打开http://localhost:8070。请注意,没有访问控制;本地机器上的所有其他用户都将能够访问数据库内容。

或者您可以尝试使用easy_installpip。它可能工作,也可能不工作,具体取决于所有依赖项的当前状态(buildout.cfg将依赖项版本硬编码到一个已知可一起工作的状态,称为“Zope 3.4已知良好集”,因此基于buildout的安装更安全)。

easy_install zodbbrowser
zodbbrowser /path/to/Data.fs

命令行选项

运行bin/zodbbrowser --help以查看完整且最新的命令行选项列表。

Usage: zodbbrowser [options] [FILENAME | --zeo ADDRESS]

Open a ZODB database and start a web-based browser app.

Options:
  -h, --help        show this help message and exit
  --zeo=ADDRESS     connect to ZEO server instead
  --listen=ADDRESS  specify port (or host:port) to listen on
  --rw              open the database read-write (allows creation of the
                    standard Zope local utilities if missing)

帮助!到处都是损坏的对象

如果您不想在各个地方看到<持久损坏的...>,请确保您的应用程序对象可以从Python路径中导入。最简单的方法是将zodbbrowser添加到您的应用程序的buildout中(或如果您使用virtualenv,则添加到virtualenv)。这样,您的应用程序(或Zope的)漂亮的__repr__也会被使用。

在线帮助

在每页的右下角都有一个“帮助”链接,它详细描述了用户界面。

作为插件使用

将zodbbrowser添加到egg列表中(例如,在您的应用程序的buildout.cfg中),并将其添加到您的site.zcml中。

<include package="zodbbrowser" />

重新运行bin/buildout,重新启动Zope,并在URL末尾追加@@zodbbrowser以开始浏览,例如:http://localhost:8080/@@zodbbrowser。或者,如果您仍然使用ZMI(Zope管理界面),请查找名为“ZODB浏览器”的新菜单项。

替代方案

在Zope svn存储库中有一个名为z3c.zodbbrowser的包,它实现了一个相同的想法(但没有历史浏览),作为一个使用wxPython编写的GUI桌面应用程序。它没有网站,并且从未发布到Python包索引。

还有一个名为dm.historical的包,它从交互式Python外壳提供对对象历史的访问。

如果您对历史或无法通过URL遍历访问的对象不感兴趣,您可以使用Zope 3 / Grok附带的本机对象检查器。

作者

ZODB Browser是由Tautvilas Mečinskas(tautvilas@pov.lt)和Marius Gedminas(marius@pov.lt)从维尔纽斯程序员开发的。它根据Zope公共许可证授权。

请在https://github.com/mgedmin/zodbbrowser/issues处报告错误。

还有一个旧的错误跟踪器在https://bugs.launchpad.net/zodbbrowser,但我真的更希望GitHub上的新错误。

变更

0.17.1 (2020-11-25)

  • 修复历史状态计算中的解释器崩溃(BTree_rangeSearch: 断言‘highbucket != NULL’失败)大型OOBTrees(GH #33)。

0.17 (2020-11-24)

  • 修复使用ZEO时出现的@@zodbbrowser_history问题(属性错误:‘TransactionIterator’对象没有属性‘close’,GH #31)。

  • 修复0.11.0中退化的OOBTree历史浏览:它只显示更改的子集(触及OOBTree本身的更改),而不显示其他更改(触及更深的OOBTreeBuckets)。

  • 修复SampleContainer子类使用非持久__data属性时的TypeError(GH: #18)。

  • 如果@@zodbbrowser_history渲染时间过长(超过10秒),则放弃渲染所有详细信息;您可以通过将fast添加到查询参数中强制快速模式,并通过将full添加到查询参数中强制完整模式。

  • 通过将nohist添加到查询参数中,可以关闭(慢速)@@zodbbrowser的历史部分。

0.16.2 (2020-11-24)

  • 对于使用ZEO时的@@zodbbrowser_history的不完整修复,自0.12以来已损坏(属性错误:‘TransactionIterator’对象没有属性‘close’,GH #31)。

  • 添加对Python 3.8和3.9的支持。

  • 删除对Python 3.5的支持。

0.16.1 (2019-07-30)

  • 修复了系统错误,当对象引用在较新事务中添加的对象时出现错误(GH #29)。

0.16.0 (2019-07-24)

  • 现在可以查看反汇编的原始pickle数据。

0.15.2 (2019-07-11)

  • 停止依赖于2012年的过时ZODB3元包。改为直接依赖持久化、BTrees、ZODB和ZEO。

0.15.1 (2019-04-23)

  • 放弃了Python 3.4的支持。

0.15.0 (2019-04-02)

  • 添加了对Python 3.7的支持。

  • 添加了对PyPy和PyPy3的支持。

  • 在PURE_PYTHON模式下支持zope.security代理。

  • 使用自定义的__repr__而不是新的持久化版本。

  • 生成的URL中的事务ID现在以十六进制形式显示。

  • 100%测试覆盖率。

0.14.0 (2017-11-15)

  • 添加了对Python 3.4、3.5和3.6的支持。

  • 取消对ZODB 3.8的支持。

0.13.1 (2017-10-06)

  • 使用ZODB的最新版本修复了@@zodbbrowser_history的错误(AttributeError: MVCCAdapterInstance没有属性iterator)。

0.13.0 (2016-11-24)

  • 取消了Python 2.6的支持(因为ZODB—更具体地说BTrees—取消了它)。

  • 修复了回滚以与transaction >= 2.0一起工作的问题(现在事务注释必须是Unicode)。

0.12.0 (2015-02-25)

  • 在历史记录标题中显示请求URL(GH #7)。

  • 自动加载Plone的ZCML(GH #9)。

  • 修复了与Zope 2包一起使用时的独立zodbbrowser(GH #10)。

0.11.2 (2015-01-09)

  • 修复了在遇到旧式类的实例时出现的AttributeError: __repr__(GH #6)。

0.11.1 (2014-12-12)

  • 更新了bootstrap.py(GH #3)。

  • 修复了@@zodbbrowser_history无法看到新事务的问题,因为缓存是永久的(GH #4)。

0.11.0 (2013-05-29)

  • 取消了Python 2.4和2.5的支持。

  • 将源代码从Launchpad迁移到Github。

  • 自定义OOBucket对象的表示。

  • 当指定无效/不存在的OID时,错误页面有所改进。

  • 处理具有非持久_order_data属性的有序容器(我在野外看到了第一个)。

  • LP#1185175的部分修复:无法浏览使用zope.interface.implementsOnly的类的对象。

0.10.4 (2012-12-19)

  • 上一个版本完全损坏(LP#1091716)。修复了问题,并修复了tox.ini以实际运行功能测试,而不仅仅是单元测试。

0.10.3 (2012-12-06)

  • 自定义无__repr__的持久对象的表示,以避免显示误导性的内存地址(LP#1087138)。

0.10.2 (2012-11-28)

  • 修复了在查看非平凡大小的BTrees时出现的POSKeyErrors错误(LP#953480)。这修复了版本0.10.0中引入的回归。

0.10.1 (2012-11-27)

  • 独立应用程序模式使用Zope异常格式化程序,以便更容易调试。

  • 修复了某些具有自定义遍历规则的容器中出现的奇怪LocationError: ‘__class__’错误。

  • 值表示中的持久对象链接现在也使用十六进制OID。

0.10.0 (2012-02-29)

  • 事务记录(@@zodb_history)的浏览。到目前为止是初始实现,当拥有大型数据库时,速度慢得令人难以置信(LP#907900)。

  • ZODB浏览器现在即使在读写模式下也不会写入数据库。之前,当您的对象具有写时读取语义时,这些写入可能会悄悄地进入。

  • 更详细的页面标题(LP#931115)。

  • 在标题中显示对象大小(LP#497780)。

  • 通过单击它们来扩展截断的值(LP#931184)。

  • 更友好的多行文本值表示。

  • 在setup.py中更新维护者电子邮件。

  • 更好的“地址已在使用中”错误消息。

0.9.0 (2011-10-21)

  • 使zodbbrowser可以作为Zope 2.12的插件使用。以前,您只能使用独立zodbbrowser应用程序与Zope 2.12数据库一起使用。

  • 在repr()中遇到异常时,更健壮:将值显示为“<unrepresentable Foo>”而不是出错。

  • 使‘python -m zodbbrowser’在Python 2.5和2.7上运行独立应用程序。请注意,‘python -m zodbbrowser.standalone’已经可以在Python 2.4到2.7上工作。

  • 添加指定 ZEO 存储名称的选项(–storage NAME)。由 Thierry Florac 贡献。

0.8.1 (2010-12-18)

  • 在历史记录中更清晰地显示元组差异。(使用一个非常简单的 diff 算法,只查找公共前缀/后缀。当你追加到末尾或删除单个项目时,效果非常好。我不能使用 difflib.SequenceMapper,因为没有保证元组项是可哈希的。)

  • 可以通过 OID 定位对象:按 g 键,然后输入 oid(支持十六进制和十进制;如果你愿意,甚至支持八进制)。你也可以通过输入类似于 '0x1234/sub/object' 的路径来从给定的 OID 开始查找子对象。

  • 捕获并显示当前状态的未序列化错误,而不仅仅是历史较老的状态。

  • 处理由持久对象直接提供的缺失接口。

    这对于独立的 zodbbrowser 应用程序有效;当使用 zodbbrowser 作为插件时,这个 zope.interface 的 monkey-patch 过于侵入性,不适合安装。

  • 通过添加 easy_install 会从 setuptools extras 中捕获的显式依赖项,使 pip install zodbbrowser 正确工作。

    注意:如果您收到 AttributeError: __file__,请确保 zope.app.applicationcontrol 至少是版本 3.5.9。较旧版本将无法与 pip 一起工作。

0.8.0 (2010-11-16)

  • 支持所有类型的 ZODB 数据库,而不仅仅是 Zope 3/BlueBream 应用程序所使用的数据库(LP#494987)。

  • 更好地渲染包含大型字典的元组和列表。

  • 删除对 zope.dublincore/zope.app.dublincore 的依赖(LP#622180)。

0.7.2 (2010-08-13)

  • 修复了 TypeError:int() 无法将非字符串转换为具有显式基数的错误,这可能会在无法从请求访问持久对象且未传递显式 oid 的情况下发生。

  • 更好地处理代理:当 type(obj) != obj.__class__ 时,显示两者。

  • 处理具有特殊持久策略的 ContainedProxy 对象。

0.7.1 (2010-03-30)

  • 重要错误修复:不要在 ZODB 对象缓存中留下旧对象状态,这可能导致数据丢失(LP#487243 再次出现,这次是针对 OrderedContainers)。

    我已经审查了代码,相当确信这个错误现在已经完全修复。

  • 尝试在以只读方式打开数据库时丢弃数据修改。

  • 避免使用已弃用的 zope.testing.doctest。

  • 避免使用 zope.app.securitypolicy;使用 zope.securitypolicy。

0.7 (2009-12-10)

  • 停止使用 setuptools extras;现在 easy_install zodbbrowser 就足以运行独立应用程序。

0.6.1 (2009-12-09)

  • 与最新的 Zope 软件包兼容,包括 ZODB 3.9.x。

0.6 (2009-12-07)

  • 能够将对象状态回滚到旧版本。需要读写数据库连接(即运行 bin/zodbbrowser –rw)。按钮默认隐藏,当您将鼠标悬停在事务列表中的条目上时,按钮会显示。

  • 默认折叠长项目列表。

0.5.1 (2009-11-23)

  • 重要错误修复:不要在 ZODB 对象缓存中留下旧对象状态,这可能导致数据丢失(LP#487243)。这影响了 OOBTree 对象。

0.5 (2009-11-23)

  • 对未序列化错误更加宽容(显示无法加载的修订版本,而不是使整个页面中断)。

  • 显示 OOBTree 对象及其子对象的全历史记录(LP#474334)。

  • 当鼠标悬停在链接上时,更改链接的背景颜色,以便清楚地了解您单击时将看到什么对象,尤其是当 __repr__ 显示包含子对象的 repr 时。

  • 在“项目”标题旁边显示容器的尺寸(LP#486910)。

  • 在容器的表示旁边显示容器的尺寸,例如:“<persistent.dict.PersistentDict 对象在 0xad0b3ec>(0 项)”。

  • 注意当 __name__ 被声明为类属性时(LP#484899)。

  • 显示对象上直接提供的接口名称(即显示 pickled zope.interface.Provides 对象的更好表示)。

  • 字典的漂亮打印(包括嵌套字典)。

0.4 (2009-10-11)

  • @@zodbbrowser oid 和 tid 参数现在接受十六进制格式的值(0x0123)。由 Adam Groszer 修补。

0.3.1 (2009-07-17)

  • 修复了 Windows 上的安装错误(路径不能以 / 结尾)。

0.3 (2009-07-17)

  • 第一次公开发布

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源代码分发

zodbbrowser-0.17.1.tar.gz (115.8 kB 查看哈希值)

上传时间 源代码

构建分发

zodbbrowser-0.17.1-py2.py3-none-any.whl (112.5 kB 查看哈希值)

上传时间 Python 2 Python 3

支持