[Zope] Showstopper: need very basic help with Zope2 persistence
Joe Grace
Occam@Wizards.com
Fri, 23 Jul 1999 10:33:02 -0700
Hi,
I'm using Zope2 and am trying to get Persistence working for the first
time by creating an object store. I'm using the documentation:
http://www.zope.org/Documentation/Reference/ObjectPublishingIntro
which has a chunk of code to do a very basic store on a Person. I've
tried this code both within and without Zope with no success. I'm
wondering whether
1. The code (appended) doesn't work for Zope2?
When ExternalMethod->Add'ed into Zope, I get:
Zope Error
Zope has encountered an error while publishing this
resource.
exceptions.AttributeError
Sorry, a Zope error occurred.
When run outside Zope, I get:
//D/Zope.W32/Extensions:-) python Person.py
Traceback (innermost last):
File "Person.py", line 14, in ?
object_store =
BoboPOS.PickleDictionary("people_store.db")
File
"D:\Zope-2.0.0a4-src\lib\python\BoboPOS\PickleDictionary.py", line 162,
i
n __init__
jar=PickleJar.PickleJar(db,cache_size,cache_age=cache_age)
File
"D:\Zope-2.0.0a4-src\lib\python\BoboPOS\PickleJar.py", line 120, in
__ini
t__
cache=self.cache=PickleCache(cache_size,cache_age)
AttributeError: 'int' object has no attribute
'setklassstate'
Is there some new code which works in Zope2 to get persistence?
2. My Zope2 installation is somehow broken?
I would really appreciate some help on this (I thought) basic issue as
it's a show-stopper for what I'm doing. I didn't expect to have this
problem since it seem(ed) so well documented and basic.
If this question is somehow unanswerable, I'd like to know that too (so
I know to give up)!
Thanks,
= Joe =
P.s., I've tried a bunch of variations and searched code for similar
fragments all to no
avail. If someone has a code fragment or pointer to working code,
please let me know.
-=- Code -=-
import BoboPOS
class Person(BoboPOS.Persistent):
"A persistent person"
def __init__(self,name,age):
self.name=name
self.age=age
def listDB( self):
return "Hello"
# define the object store
#
object_store = BoboPOS.PickleDictionary("people_store.db")
# retrieve billy from the object store
#
if object_store.has_key("billy"):
# if billy is in the object store, then
# load it from the object store
#
billy=object_store["billy"]
else:
# since billy isn't already in the object
# store, we must create the object and
# place it in the object store.
#
billy=object_store["billy"]=Person("Billy",77)
# normally Zope will handle transactions,
# but in this special case, we need to
# commit the transaction to save the new
# persistent object
#
get_transaction().commit()
# display the object that we retrieved
# from the object store
#
listDB()