Appengine - 在Datastore中存储Pickled
在Google Appengine中,我想把一个对象进行序列化(也就是把它转换成一种可以存储的格式),然后把它存到数据存储中。我不需要对它进行索引。
如果我把它存成BlobProperty(大块二进制数据)和TextProperty(文本数据),这两者有什么区别呢?哪种方式更好呢?
3 个回答
2
NDB现在提供了一种叫做:PickleProperty
的功能。
这个值是一个Python对象,比如一个列表、字典或者字符串,它可以通过Python的pickle协议进行序列化;数据存储会把这个序列化后的数据作为一个二进制大对象(blob)来保存。默认情况下不进行索引。
还有一个可选的参数:
compressed
。
4
BlobProperty 可以用来存储 二进制数据,而 TextProperty 只能存储 字符串。
其实你可以把 BlobProperty 当作 TextProperty 来用,因为 TextProperty 本质上就是带编码的 BlobProperty。
1
没关系。我刚刚对这两种情况进行了测试。看起来你不能把TextProperty和pickle一起用,这样会出错。不过,使用BlobProperty就没问题,效果很好。