我设法在python中使用google.cloud.datastore创建或修改数据存储实体,但是当我在浏览器中登录我的Cloud Platform项目并检查条目时,看起来它的所有属性都已加密(它们看起来像"Rm9vIEJhcg=="
等 - 如果我从浏览器创建它,我可以正常看到。)
我正在使用服务帐户标识的json文件进行身份验证:
self.client = datastore.Client()
self.client = self.client.from_service_account_json(cert_file.json)
服务帐户有"编辑器"整个项目的权限。将其更改为"所有者",这是我用于登录的Gmail帐户的设置,并不能解决问题。
我像这样创建实体:
with self.datastore.client.transaction():
entity = Entity(Key("key", project="project"))
entity["property"] = "data"
self.datastore.client.put(entity)
任何方法都可以使用python库修改的条目可以从浏览器站点读取吗?
答案 0 :(得分:5)
该值未真正加密,而是使用Base64编码。原因是该值存储为Blob(原始字节),而不是文本/字符串。控制台以Base64格式显示Blob字段。当用Base64解码时,值Rm9vIEJhcg ==是Foo Bar。
我对Python没有太多了解,但请看一下官方documentation的说明:
将实体保存到后端时,值为“text”(unicode 在Python2中,str3在Python3中将使用'text_value'保存 字段,在编码为UTF-8之后。从后端检索时, 这些值将再次解码为“文本”。值为“字节” (Python2中的str,Python3中的字节),将使用 'blob_value'字段,没有任何解码/编码步骤。
根据您使用的Python版本,调整数据的数据类型,并解决问题。