我试图使用(仅使用ZODB )在FileStorage数据库中持久化对象引用。我做了一个测试来分析它的性能,但是当它被加载时,它似乎被破坏了。
测试由:组成
zodb1.py
import ZODB
from ZODB.FileStorage import FileStorage
import persistent
import transaction
storage = FileStorage('ODB.fs')
db = ZODB.DB(storage)
connection = db.open()
ODB = connection.root()
print(ODB)
class Instrument(persistent.Persistent):
def __init__(self, name, address):
self.name = name
self.address = address
def __str__(self):
return f'Instrument - {self.name}, ID: {self.address}'
camera = Instrument(name='Logitech', address='CAM0')
ODB['camera'] = camera
ODB._p_changed = True
transaction.commit()
print(ODB)
ob = ODB['camera']
print(ob)
print(dir(ob))zodb2.py
import ZODB, ZODB.FileStorage
import persistent
import transaction
connection = ZODB.connection('ODB.fs')
ODB = connection.root()
print(ODB)
ob = ODB['camera']
print(ob)
print(dir(ob))我错过了什么重要的事情吗?我已经阅读了ZODB的文档,我没有看到其他的配置过程,也没有看到其他方法来实现这一点。
提前谢谢你。
发布于 2022-11-14 16:12:28
我认为您看到的问题是因为zodb2.py不了解在zodb1.py中定义的Instrument类。
我想,如果您将类移动到一个单独的模块中,并将其导入zodb1和zodb2中,您将不会看到一个破碎的对象。
https://stackoverflow.com/questions/72899290
复制相似问题