【发布时间】:2021-06-29 20:38:30
【问题描述】:
我正在使用 gcloud cli 工具处理一个项目。我正在使用 Python + Flask 来开发应用程序。我的主要参考点是Google Datastore documentation 和this How-to tutorial guide。
我的数据存储区中有一些实体,这些实体具有一些属性。实体在应用程序中创建,密钥设置为默认密钥(a.k.a 不完整的密钥)。
我可以访问实体。并且使用投影,我还可以访问每个实体的属性。但是,有没有办法只从实体中提取密钥?示例:
>>> print(list(user_query.fetch()))
[<Entity('User', 5097358505279488) {...}>]
当我想访问属性时,这可以正常工作。但是,我无法访问密钥509..。我也试过:
>>> for user in user_query.fetch():
print(user.key)
...
>>> <Key('User', 5097358505279488), project=...>
虽然它返回整个 Key 对象,但我找不到只提取密钥的方法。我已经搜索了解决方案的文档,但它没有返回任何内容。我想知道目前这是否可能。
【问题讨论】:
-
文档暗示 Keys 是 JSON 对象。您可以使用 typical method of working with JSON objects in Python 访问单个 keyValue 元素吗?
-
@Frodnar 不幸的是,这不起作用:(它会引发以下错误:
TypeError: Object of type Key is not JSON serializable。我认为密钥的存储方式与其他属性不同。 -
讨厌把你送进另一个兔子洞,因为我自己显然不明白这个问题,但它可以存储为protocol buffer...吗?
-
@Frodnar 我认为这是不可能的,因为 Datastore API 不允许这样做。但我仍然感谢您的帮助。
标签: python flask google-cloud-platform google-cloud-datastore