Richard Jennings wrote at 2006-6-7 11:53 +0200:
>I have a Zope2.7.2/Zeo2.2.2 instance running, using the standard zope.conf &
>zeo.conf settings (exception: port=8081) and it works fine. I want read-only
>access to the instance zodb to read site object properties. In a test
>script, I have used the apparently classic pattern, shown below:
> addr = ('localhost', 8081)
> storage = ClientStorage.ClientStorage(addr)
> db = DB(storage)
> conn = db.open()
> root = conn.root()
> app = root['Application']
>This results in the exception shown below.
>The pattern is so basic and simple, it seems difficult to make a mistake, but
>I am! Can someone tell me what?
> File "/opt/zope/lib/python/ZODB/Connection.py", line 160, in __getitem__
> klass=self._db._classFactory(self, module, name)
> File "/opt/zope/lib/python/ZODB/DB.py", line 128, in _classFactory
>AttributeError: 'module' object has no attribute 'Application'
Almost surely, the module is "OFS.Application".
This module defines the class "Application". If it is not there,
then some cyclic import prevented it from being already defined.
It may help to import it before you access the storage root.
For more information about ZODB, see the ZODB Wiki:
ZODB-Dev mailing list - ZODB-Dev@zope.org