Appengine - 在Datastore中存储Pickled

2 投票
3 回答
894 浏览
提问于 2025-04-16 18:29

在Google Appengine中,我想把一个对象进行序列化(也就是把它转换成一种可以存储的格式),然后把它存到数据存储中。我不需要对它进行索引。

如果我把它存成BlobProperty(大块二进制数据)和TextProperty(文本数据),这两者有什么区别呢?哪种方式更好呢?

3 个回答

2

NDB现在提供了一种叫做:PickleProperty的功能。

这个值是一个Python对象,比如一个列表、字典或者字符串,它可以通过Python的pickle协议进行序列化;数据存储会把这个序列化后的数据作为一个二进制大对象(blob)来保存。默认情况下不进行索引。

还有一个可选的参数:compressed

4

BlobProperty 可以用来存储 二进制数据,而 TextProperty 只能存储 字符串

其实你可以把 BlobProperty 当作 TextProperty 来用,因为 TextProperty 本质上就是带编码的 BlobProperty

1

没关系。我刚刚对这两种情况进行了测试。看起来你不能把TextProperty和pickle一起用,这样会出错。不过,使用BlobProperty就没问题,效果很好。

撰写回答