我需要在我的ZODB数据库中存储图像。我试图使用blobs,但由于缺乏在线文档和示例,这使得这非常困难。我不明白如何使用IBlobStorage接口。目前,我的数据库如下:
storage = FileStorage.FileStorage('DummyData.fs')
db = DB(storage)
connection = db.open()
root = connection.root()
root.users = BTrees.OOBTree.BTree()我的第一次尝试是列出一个小斑点:
l = []
l.append(Blob((np.random.rand(1200,1200,3)* 255).astype('uint8').tobytes()))并将其存储在Btree()中。但是,此树不支持气泡。我不知道如何使用IBlobStorage或其他存储接口,因此非常希望得到一些指导。对例子的任何引用或链接都是足够的答案。谢谢!
发布于 2022-08-31 12:43:13
BlobStorage本质上是一个覆盖在常规存储之上的覆盖,所以您可以将它放在上面,然后使用它。
下面是关于如何在ZODB中使用BLOB存储的一个非常小的示例:
import ZODB, ZODB.FileStorage, transaction
from ZODB.blob import Blob, BlobStorage
# Create DB with BLOB
storage = ZODB.FileStorage.FileStorage("ZODB_minimal.fs")
blob_storage = BlobStorage("ZODB_minimal_blobs", storage)
db = ZODB.DB(blob_storage)
connection = db.open()
# Create BLOB
blob = Blob()
with blob.open('w') as bf:
bf.write(b"I am a BLOB!")
bf.close()
# Put into DB
connection.root.blob = blob
# Close DB
transaction.commit()
connection.close()
db.close()
# Read it back
storage = ZODB.FileStorage.FileStorage("ZODB_minimal.fs")
blob_storage = BlobStorage("ZODB_minimal_blobs", storage)
db = ZODB.DB(blob_storage)
connection = db.open()
blob = connection.root.blob
with blob.open('r') as bf:
text = bf.readline()
print(text)
bf.close()
db.close()希望能帮上忙!
https://stackoverflow.com/questions/66878743
复制相似问题