Python 2.7 NDB JsonProperty与云数据存储库的兼容性

Python 2.7 NDB JsonProperty与云数据存储库的兼容性,python-2.7,google-app-engine,google-cloud-datastore,app-engine-ndb,app-engine-flexible,Python 2.7,Google App Engine,Google Cloud Datastore,App Engine Ndb,App Engine Flexible,我使用NDB在标准GAE上运行代码,使用Google云数据存储库在flexible env上运行代码。两者都访问相同的实体 我在处理ndb.JsonProperty时遇到问题。据我所知,这些属性存储为blob,所以我尝试使用云库模拟该属性。在存储值之前,我执行以下操作: value_to_store = json.dumps(value, separators=[',',':']) value_to_store = base64.b64encode(value_to_store) 当我读到一个

我使用NDB在标准GAE上运行代码,使用Google云数据存储库在flexible env上运行代码。两者都访问相同的实体

我在处理ndb.JsonProperty时遇到问题。据我所知,这些属性存储为blob,所以我尝试使用云库模拟该属性。在存储值之前,我执行以下操作:

value_to_store = json.dumps(value, separators=[',',':'])
value_to_store = base64.b64encode(value_to_store)
当我读到一个属性时,情况正好相反:

read_value = base64.b64decode(from_db_value)
read_value = json.loads(read_value)
在这种情况下,一切正常:

Insert using NDB ---> Read using Cloud Library
Insert using Cloud Library ---> Read using Cloud Library
但在以下情况下失败:

Insert using Cloud Library --> Read using NDB
存储这些属性以使其与NDB兼容的正确方法是什么


谢谢。

我终于找到了解决办法

关键是NDB将值存储为blob,而库将值存储为字符串

解决方案就是不要对字符串值进行编码/解码,库将这样做,并将值存储为blob,这是NDB所期望的

写作:

value_to_store = json.dumps(value, separators=[',',':'])
阅读:

read_value = json.loads(read_value)

轻松点

好的,使用云库插入的值似乎保存为字符串,而使用NDB插入的值是Blob。所以我只需要弄清楚如何使用云数据存储库将值存储为Blob