python-3.x - gcp - 从数据存储中获取所有实体
问题描述
我正在尝试从数据存储中获取所有数据实体。当我遇到 google docs 时,我发现了类似于Query Projection ( Link to the Docs ) 的东西。这是我用来从数据存储中获取所有实体的代码。
def do_the_query_projection(self, kind_name):
query = self.client.query(kind=kind_name)
query.projection = ['attr_1', 'attr_2', 'attr_3']
#create a list to store
f, m, r = [], [], []
for task in query.fetch():
f.append(task['attr_1'])
m.append(task['attr_2'])
r.append(task['attr_3'])
return f, m, r
这是我现在面临的错误
> google.api_core.exceptions.FailedPrecondition: 400 no matching index
> found. recommended index is:
> - kind: <kind_name> properties:
> - name: attr_1
> - name: attr_2
> - name: attr_3
是否有任何其他方法可以从 Cloud Datastore 检索所有数据实体?我们是否需要创建复合索引来检索数据?我是 GCP 的新手。
解决方案
尝试在没有投影的情况下进行查询。
当您已经在要检索的列上具有复合索引时,投影查询很有用,因为它允许您从索引中检索这些列,而无需从数据表中检索任何内容。但是,如果您没有索引,则数据存储区必须以任何一种方式检索完整数据,因此在这种情况下它不允许您指定投影。
推荐阅读
- java - 将 SwipeView 放在片段中?
- bash - 如何从 Nginx 运行 bash 脚本
- python - 防止 docker-compose 在使用构建的图像时重新安装 requirements.txt
- hangouts-chat - 如何通过 API 创建带有视频会议链接的环聊聊天消息
- javascript - 运行节点文件参数时切断双引号
- batch-file - 如何在 shell 中运行批处理?
- spring - Spring JpaRepository - findByParam(字符串参数)不区分大小写
- scala - `_corrupt_record: string (nullable = true)` 带有一个简单的 Spark Scala 应用程序
- sql - 在 Identity Server 4 中放置用户声明的位置
- android - 每次获得新的 LatLng 时如何更新标记?