首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZODB Blob存储

ZODB Blob存储
EN

Stack Overflow用户
提问于 2021-03-30 21:32:25
回答 1查看 82关注 0票数 1

我需要在我的ZODB数据库中存储图像。我试图使用blobs,但由于缺乏在线文档和示例,这使得这非常困难。我不明白如何使用IBlobStorage接口。目前,我的数据库如下:

代码语言:javascript
复制
storage = FileStorage.FileStorage('DummyData.fs')
db = DB(storage)
connection = db.open()
root = connection.root()
root.users = BTrees.OOBTree.BTree()

我的第一次尝试是列出一个小斑点:

代码语言:javascript
复制
l = []
l.append(Blob((np.random.rand(1200,1200,3)* 255).astype('uint8').tobytes()))

并将其存储在Btree()中。但是,此树不支持气泡。我不知道如何使用IBlobStorage或其他存储接口,因此非常希望得到一些指导。对例子的任何引用或链接都是足够的答案。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-08-31 12:43:13

BlobStorage本质上是一个覆盖在常规存储之上的覆盖,所以您可以将它放在上面,然后使用它。

下面是关于如何在ZODB中使用BLOB存储的一个非常小的示例:

代码语言:javascript
复制
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()

希望能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66878743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档