Python 无法通过google数据存储应用投影查询。错误:找不到匹配的索引
我是谷歌数据存储的新手,并遵循这个谷歌文档 我已经通过阅读此文档完成了调用Google API的授权 我只有两个文件:Python 无法通过google数据存储应用投影查询。错误:找不到匹配的索引,python,google-cloud-datastore,Python,Google Cloud Datastore,我是谷歌数据存储的新手,并遵循这个谷歌文档 我已经通过阅读此文档完成了调用Google API的授权 我只有两个文件: 1. client_secret.json 2. datastoreConnection.py 这是迄今为止我的datastoreConnection.py: import os os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = '/path/to/client_secret.json' from oauth2client.c
1. client_secret.json
2. datastoreConnection.py
这是迄今为止我的datastoreConnection.py:
import os
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = '/path/to/client_secret.json'
from oauth2client.client import GoogleCredentials
credentials = GoogleCredentials.get_application_default()
from google.cloud import datastore
client = datastore.Client(project ="xyz",namespace = "staging")
def list_tasks(client):
query = client.query(kind='testData')
query.projection = ['patientName']
return list(query.fetch(limit=10))
print(list_tasks(client))
此代码工作正常,并返回我所需的数据
应用具有多个属性的投影时出现问题。
e、 g
代码给了我一个错误:
google.cloud.exceptions.PreconditionFailed: 412 no matching index found. recommended index is:<br/>- kind: testData<br/> properties:<br/> - name: age<br/> - name: patientName<br/>
google.cloud.exceptions.premissions失败:412未找到匹配索引。建议索引为:
种类:testData
属性:
名称:年龄
名称:患者姓名
为了进行投影查询,我读了这篇文章。
我已经交叉检查了属性名称,但仍然有相同的错误。
我怎样才能解决这个问题
我在与此类问题相关的其他问题中看到了index.yaml文件。这是否有必要使用?它的好处是什么?任何时候,您需要检索多个属性,但不是所有属性(*),您需要有一个匹配的复合索引。在这种情况下,您需要患者姓名和年龄属性的复合索引。可以使用index.yaml文件或gcloud命令行工具创建复合索引。以下文档应能帮助您:
这在过去可能是正确的,但现在您可以检索属性的子集,而无需先预定义这些属性的复合索引。文档中仍然指出,投影查询需要索引。如果使用Emulator,将自动创建这些索引。
google.cloud.exceptions.PreconditionFailed: 412 no matching index found. recommended index is:<br/>- kind: testData<br/> properties:<br/> - name: age<br/> - name: patientName<br/>