我正在浏览谷歌云数据存储docs。当我遇到这个代码片段时
query_filter = query.Or(
[
query.PropertyFilter("starred", "=", True),
query.And([query.PropertyFilter("done", "=", False),
query.PropertyFilter("priority", "=", 4,),
]
)
]
)
这对我当前的项目非常有用。但是,当我尝试使用它时,出现以下错误。
AttributeError: 'Query' object has no attribute 'Or'
起初,我以为是因为我的版本过时了,所以我用pip更新了。以下是我的 requirements.txt 的摘录
google-cloud-datastore>=2.15.1
google-cloud-storage>=2.8.0
没有雪茄,所以我尝试用
gcloud components update
更新我的 sdk
但它仍然不允许我使用query.Or()。它也不让我使用其他功能,例如
IN
in query.add_filter('id', 'IN', 'id_list')
我已经试过了,但我不知道哪里出了问题。所有其他功能都按预期工作。
这是我得到错误的代码。我调用了错误的对象吗?
query = datastore_client.query()
query.Or()
从文档,你的代码应该使用
datastore.query
即
query_filter = datastore.query.Or(
[
datastore.query.PropertyFilter("starred", "=", True),
datastore.query.And([datastore.query.PropertyFilter("done", "=", False),
datastore.query.PropertyFilter("priority", "=", 4,),
]
)
]
)
如果你想使用你引用的文档中编写的代码,那么你必须先做
from google.cloud.datastore import query