【发布时间】:2021-10-05 15:27:59
【问题描述】:
根据https://cloud.google.com/datastore/docs/concepts/metadataqueries
种类查询返回种类种类的实体,其键名是实体种类的名称。这种类型的查询被隐式地限制在当前命名空间中,并且只支持对 key 伪属性上的范围进行过滤。结果可以按升序(但不是降序)key 值排序。由于 kind 实体没有属性,因此仅键和非仅键查询都返回相同的信息。
我不确定当前命名空间是什么意思,如何设置当前命名空间?在创建客户端对象时传递命名空间作为参数,在查询后给我错误。
代码:
from os import name
from google.cloud import datastore
import csv
# For help authenticating your client, visit
# https://cloud.google.com/docs/authentication/getting-started
client = datastore.Client()
datstore_kinds_file = "datastore_kinds.csv"
# All namespaces
query = client.query(kind="__namespace__")
query.keys_only()
all_namespaces = [entity.key.id_or_name for entity in query.fetch()]
namespaces_list_with_kinds=[]
for namespace in all_namespaces:
print(f"====Processing namespace {namespace}====")
client = datastore.Client(namespace=namespace)
query = client.query(kind="__kind__")
query.keys_only()
kinds = [entity.key.id_or_name for entity in query.fetch()]
kinds.insert(0,namespace)
namespaces_list_with_kinds.append(kinds)
# writing to csv file
with open(datstore_kinds_file, 'w') as csvfile:
# creating a csv writer object
csvwriter = csv.writer(csvfile)
# writing the fields
csvwriter.writerows(namespaces_list_with_kinds)
错误:
Traceback (most recent call last):
File "get_all_datastore_kinds.py", line 25, in <module>
kinds = [entity.key.id_or_name for entity in query.fetch()]
File "get_all_datastore_kinds.py", line 25, in <listcomp>
kinds = [entity.key.id_or_name for entity in query.fetch()]
File "/home/vishal/.local/lib/python3.8/site-packages/google/api_core/page_iterator.py", line 212, in _items_iter
for page in self._page_iter(increment=False):
File "/home/vishal/.local/lib/python3.8/site-packages/google/api_core/page_iterator.py", line 243, in _page_iter
page = self._next_page()
File "/home/vishal/.local/lib/python3.8/site-packages/google/cloud/datastore/query.py", line 566, in _next_page
partition_id = entity_pb2.PartitionId(
TypeError: 1 has type int, but expected one of: bytes, unicode
有人可以帮忙吗,谢谢。
【问题讨论】:
标签: python-3.x google-api google-cloud-storage google-cloud-datastore