[Zope-dev] connecting server code to the ZODB

Tim Hicks tim at sitefusion.co.uk
Mon Nov 8 06:22:13 EST 2004

Paul Winkler said:

>> > What I really want to be able to do from the server code is something
>> like::
>> >
>> >     root = magic_that_gets_me_zodb_root()
>> That magic is basically (from memory):
>>   import Zope
>>   Zope.startup()
>>   root = Zope.app()
>> But note that starting up a zope is slow, so you don't want to do that
>> very often.
> Well, in this case zope is already running.

Ok, so I could simply drop the Zope.startup() line and things would be
fine (and quick), right?

> I think you should use the existing publisher machinery.
> Given an SMTPRequest instance foo, you should be able to
> do foo.traverse(path, response) and get back an object.
> This monster method is defined in ZPublisher/BaseRequest.py

What does using foo.traverse() buy me over simply accessing the ZODB
objects 'by hand', as in root = Zope.app()?  It seems I get security by
using foo.traverse() - although I'm not sure whether that is really
necessary for my purposes.  Would it also deal with any ZODB transaction
stuff for me that I would otherwise have to sort out -
get_transaction().commit().  If I'm just reading ZODB objects (not
writing), does the transaction stuff even matter?



More information about the Zope-Dev mailing list