使用浏览器查看时,创建数据存储条目会导致加密属性

leo*_*vlt 1 python google-cloud-datastore gcloud-python google-cloud-python

我设法在python中使用google.cloud.datastore创建或修改数据存储实体,但是当我在浏览器中登录我的Cloud Platform项目并检查条目时,看起来它的所有属性都是加密的(它们看起来像"Rm9vIEJhcg=="等 - 如果我从浏览器创建它,我可以正常看到).

我正在使用服务帐户标识的json文件进行身份验证:

self.client = datastore.Client()
self.client = self.client.from_service_account_json(cert_file.json)
Run Code Online (Sandbox Code Playgroud)

服务帐户对整个项目具有"编辑"权限.将其更改为"所有者",这是我用于登录的Gmail帐户的设置,但不能解决问题.

我像这样创建实体:

with self.datastore.client.transaction():
    entity = Entity(Key("key", project="project"))
    entity["property"] = "data"
    self.datastore.client.put(entity)
Run Code Online (Sandbox Code Playgroud)

有什么方法可以使用python库修改的条目可以从浏览器站点读取吗?

小智 5

该值未真正加密,而是使用Base64编码.原因是该值存储为Blob(原始字节),而不是文本/字符串.控制台以Base64格式显示Blob字段.当用Base64解码时,值Rm9vIEJhcg ==是Foo Bar.

我对Python没有太多的了解,但请查看官方文档中的注释:

将实体保存到后端时,在编码为UTF-8后,将使用"text_value"字段保存"text"(Python2中的unicode,Python3中的str)的值.从后端检索时,这些值将再次解码为"文本".将使用'blob_value'字段保存"bytes"(Python2中的str,Python3中的字节)的值,而不使用任何解码/编码步骤.

根据您使用的Python版本,调整数据的数据类型,并解决问题.