如何访问Google Cloud Datastore命名空间元数据?需获取created_at属性
访问Google Cloud Datastore命名空间元数据的方案
Datastore的__namespace__系统实体本身没有内置的created_at这类元数据属性——从你查询返回的空实体结构也能看出来,它只是一个标识命名空间存在的空实体,仅包含键信息,没有默认的系统元数据字段。
要获取命名空间的创建时间这类信息,有两种可行方案:
1. 手动自定义维护元数据
当你首次使用某个命名空间时,主动给对应的__namespace__实体添加自定义属性(比如created_at),后续就能通过查询获取这些信息。示例代码:
import datetime from google.cloud import datastore ds_client = datastore.Client(project=PROJECT) namespace_id = "your-target-namespace" # 获取命名空间实体的键 namespace_key = ds_client.key('__namespace__', namespace_id) namespace_entity = ds_client.get(namespace_key) # 若实体不存在(首次使用该命名空间),创建并添加元数据 if not namespace_entity: namespace_entity = datastore.Entity(key=namespace_key) namespace_entity['created_at'] = datetime.datetime.now(tz=datetime.timezone.utc) namespace_entity['created_by'] = "your-service-account" # 可选额外字段 ds_client.put(namespace_entity) # 后续查询即可获取这些属性 query = ds_client.query(kind="__namespace__") for ns in query.fetch(): print(f"命名空间: {ns.key.id}, 创建时间: {ns.get('created_at')}")
2. 通过Cloud Audit Logs追溯
Datastore的命名空间是在首次向该命名空间写入实体时自动创建的,你可以开启Cloud Datastore的审计日志,通过日志中的google.datastore.v1.Datastore.Commit操作记录,找到对应命名空间的首次写入时间,以此作为命名空间的创建时间。
注意:审计日志需要提前在Google Cloud控制台的「IAM与管理-日志记录」中开启Datastore的审计日志配置。
内容的提问来源于stack exchange,提问作者Potis23
相关产品推荐
相关产品推荐

