我使用的是带有ZODB3数据库的独立zodbbrowser 0.11.1。我可以很好地访问数据库,但当我将未知类型的对象插入ZODB时,浏览器仅显示:
Attributes
data: {u'account-1': <persistent broken __main__.Account instance '\x00\x00\x00\x00\x00\x00\x00\x01'>,
u'account-2': <persistent broken __main__.Account instance '\x00\x00\x00\x00\x00\x00\x00\x01'>
}
我想看一个格式化的打印输出从uuurepr\uuuuuuuuuuuuuuuuuuuuuuuuuuuu(或uuuuuuuuu str\uuuuuuuuuuuuuu)。有关pypi的简短用户指南位于帮助!随处可见的断开对象建议确保应用程序对象可从Python路径导入。但我不知道怎么做。你知道吗
如何创建Account类(来自教程):
class Account(Persistent):
def __init__(self):
...
在独立模式下,zodbbrowser知道如何用对象实例的\uu str \uuuuuuu表示替换持久的中断类型?你知道吗
概括地回答这个问题:
最简单的方法是
pip install zodbbrowser
进入您用于创建相关数据库的ZODB应用程序的同一个virtualenv。这假设您使用virtualenv。第二种最简单的方法是将
zodbbrowser
添加到创建相关数据库的ZODB应用程序所使用的构建中buildout.cfg
的鸡蛋列表中。这假设您使用zc.buildout公司.最后,您可以尝试设置PYTHONPATH,以便用于创建持久对象的模块是可导入的。
以上这些对您的具体情况都没有帮助,因为持久化对象是属于
__main__
模块的对象。那是个坏主意!在每个Python调用中只有一个__main__
,这取决于您运行的脚本。如果该脚本是zodbbrowser,那么它不可能也是您的应用程序。你知道吗为了获得最佳结果,不要在主脚本中定义任何持久子类。总是在单独的模块中定义它们并导入它们。你知道吗
但是,如果您已经有这样一个数据库,并且需要出于取证目的或其他目的访问这些对象,那么有一个可能的解决方法:
写一个新脚本,比如
myzodbbrowser.py
,如下所示:在安装了zodbbrowser的virtualenv或buildout中使用Python运行它。
相关问题 更多 >
编程相关推荐