我使用NDB运行Standar GAE上的代码,并使用Google Cloud数据存储库在灵活的环境中运行代码。两者都访问相同的实体。
我在处理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兼容的正确方法是什么?
感谢。
答案 0 :(得分:3)
最后我找到了解决方案。
重点是NDB将值存储为blob,而库存储为字符串。
解决方案只是不对字符串值进行编码/解码,库将执行此操作并将值存储为blob,这是NDB期望的。
写作:
value_to_store = json.dumps(value, separators=[',',':'])
读:
read_value = json.loads(read_value)
容易!