我设法在python中创建或修改google.cloud.datastore的数据存储实体,但是当我在浏览器中登录到我的云平台项目并检查条目时,看起来它的所有属性都是加密的(它们看起来像"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库修改的条目从浏览器站点可读吗?
该值并未真正加密,而是使用Base64编码。这样做的原因是该值被存储为Blob(原始字节),而不是文本/字符串。控制台以Base64格式显示Blob字段。当用Base64解码时,值Rm9vIEJhcg==是Foo Bar。
我对Python了解不多,但可以看看官方文档中的注释:
当保存一个实体到后端时,值是" text " (unicode在Python2中,str在Python3中)将使用' text_value '保存字段,编码为UTF-8后。从后端检索时,这些值将再次解码为"文本"。值是"字节"(str在Python2中,bytes在Python3中),将使用' blob_value '字段,没有任何解码/编码步骤。
根据您使用的Python版本,调整数据的数据类型,问题应该会得到解决。