Skip to main content

ZODB browser

Project description

The ZODB browser allows you to inspect persistent objects stored in the ZODB, view their attributes and historical changes made to them.

Usage as a standalone project

Install all the dependencies into the source tree with zc.buildout:

python bootstrap.py
bin/buildout

Run bin/zodbbrowser specifying either a filename or a ZEO address

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

If you don’t have a spare Data.fs to test with, you can create a new empty one with just the barest Zope 3 scaffolding in it:

bin/zodbbrowser empty.fs --rw

Open http://localhost:8070 in a web browser. Note that there are no access controls; all other users on the local machine will be able to access the database contents.

Or you could try to use easy_install. It may work or it may not, depending on the current state of all the dependencies (buildout.cfg hardcodes dependency version to a known-working-together state, called the “Zope 3.4 Known Good Set”, so buildout-based installs are safer)

easy_install zodbbrowser
zodbbrowser /path/to/Data.fs

Command-line options

Run bin/zodbbrowser --help to see a full and up-to-date list of command-line options:

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)

Online help

There’s a little ‘help’ link in the bottom-right corner of every page that describes the user interface in greater detail.

Usage as a plugin

Add zodbbrowser to the list of eggs (e.g. in buildout.cfg of your app) and add this to your site.zcml:

<include package="zodbbrowser" />

Rerun bin/buildout, restart Zope and append @@zodbbrowser to the end of the URL to start browsing, e.g. http://localhost:8080/@@zodbbrowser. Or, if you still use ZMI (the Zope Management Interface), look for a new menu item titled “ZODB Browser”.

Alternatives

There’s a package called z3c.zodbbrowser in the Zope svn repository that implements the same idea (but without history browsing) as a GUI desktop application written using wxPython. It doesn’t have a website and was never released to the Python Package Index.

There’s also dm.historical which provides access to object history from an interactive Python shell.

If you’re not interested in history or objects that cannot be reached through URL traversal, you can use the built-in object inspector that comes with Zope 3 / Grok.

Authors

ZODB Browser was developed by Tautvilas Mečinskas (tautvilas@pov.lt) and Marius Gedminas (marius@pov.lt) from Programmers of Vilnius. It is licenced under the Zope Public Licence.

Please report bugs at https://bugs.launchpad.net/zodbbrowser

Changes

0.8.1 (2010-12-18)

  • Show tuple differences more clearly in the history. (Uses a really dumb diff algorithm that just looks for a common prefix/suffix. Works really well when you append to the end, or remove just a single item. I cannot use difflib.SequenceMapper because there’s no guarantee tuple items are hashable.)

  • Make it possible to locate an object by OID: press g, then type the oid (hex and both decimal supported; even octal, should you wish to use it). You can also find subobjects starting from a given OID by entering paths like ‘0x1234/sub/object’.

  • Catch and display unpickling errors of the current state, not just historical older states.

  • Handle missing interfaces that are directly provided by persistent objects.

    This works for the standalone zodbbrowser application; the zope.interface monkey-patch for this is too intrusive to install when using zodbbrowser as a plugin.

  • Made pip install zodbbrowser work properly by adding explicit dependencies that easy_install would’ve picked up from setuptools extras.

    Note: if you get AttributeError: __file__, make sure zope.app.applicationcontrol is at least version 3.5.9. Older versions will not work with pip.

0.8.0 (2010-11-16)

  • Support all kinds of ZODB databases, not just those used by Zope 3/BlueBream apps (LP#494987).

  • Renders tuples and lists that contain large dicts better.

  • Remove dependency on zope.dublincore/zope.app.dublincore (LP#622180).

0.7.2 (2010-08-13)

  • Fixed TypeError: int() can’t convert non-string with explicit base that could occur if no persistent objects were accessible from the request, and no explicit oid was passed.

  • Handle proxies better: when type(obj) != obj.__class__, show both.

  • Handle ContainedProxy objects with their special persistence scheme.

0.7.1 (2010-03-30)

  • IMPORTANT BUGFIX: don’t leave old object states lying around in ZODB object cache, which could lead to DATA LOSS (LP#487243 strikes again, this time for OrderedContainers).

    I’ve audited the code and am fairly confident this bug is now dead dead dead.

  • Try to discard data modifications when the DB is opened read-only.

  • Avoid deprecated zope.testing.doctest.

  • Avoid zope.app.securitypolicy; use zope.securitypolicy.

0.7 (2009-12-10)

  • Stopped using setuptools extras; now easy_install zodbbrowser is sufficient to run the standalone app.

0.6.1 (2009-12-09)

  • Compatibility with latest Zope packages, including ZODB 3.9.x.

0.6 (2009-12-07)

  • Ability to revert object state to an older version. Requires a read-write database connection (i.e. run bin/zodbbrowser –rw). The button is hidden and appears when you’re hovering over a transaction entry in the list.

  • Collapse long item lists by default.

0.5.1 (2009-11-23)

  • IMPORTANT BUGFIX: don’t leave old object states lying around in ZODB object cache, which could lead to DATA LOSS (LP#487243). This affected OOBTree objects.

0.5 (2009-11-23)

  • Be a bit more tolerant to unpickling errors (show which revision could not be loaded instead of breaking the whole page).

  • Show full history of OOBTree objects and subobjects (LP#474334).

  • Change background color of links on hover, to make it clear what object you’ll see when you click, especially when the __repr__ shown contains reprs of subobjects.

  • Show size of containers next to the “Items” heading (LP#486910).

  • Show size of containers next to their representation, e.g. “<persistent.dict.PersistentDict object at 0xad0b3ec> (0 items)”.

  • Pay attention when __name__ is declared as a class attribute (LP#484899).

  • Show names of directly provided interfaces on objects (i.e. show a better representation of pickled zope.interface.Provides objects).

  • Pretty-printing of dictionaries (including nested ones).

0.4 (2009-10-11)

  • @@zodbbrowser oid and tid parameters now accept values in hex format (0x0123) Patch by Adam Groszer.

0.3.1 (2009-07-17)

  • Fixed install error on Windows (path cannot end in /).

0.3 (2009-07-17)

  • First public release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zodbbrowser-0.8.1.tar.gz (82.3 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page