Как выполнять запросы на основе ключей к Google Datastore из Python 3? - PullRequest
2 голосов
/ 23 октября 2019

Мне удается подключиться к базе данных Google Cloud Datastore. Теперь я хочу, чтобы некоторые сущности получили их Key / Id. Прямо сейчас я делаю следующее:

from google.cloud import datastore


client = datastore.Client()
query = client.query(kind='City')
query.key_filter("325899977574122") -> Exception here

Я получаю "Неверный ключ: '325899977574122'". Что может быть причиной ошибки? Этот идентификатор существует, у города есть этот ключ / идентификатор.

1 Ответ

2 голосов
/ 23 октября 2019

Похоже, он должен иметь тип google.cloud.datastore.key.Key

https://googleapis.dev/python/datastore/latest/queries.html#google.cloud.datastore.query.Query.key_filter

Кроме того, 325899977574122, вероятно, должен быть приведен к длинному

Так что-то вроде этого:

client = datastore.Client()
query = client.query(kind='City')
query.key_filter(Key('City', 325899977574122L, project=project)) 

РЕДАКТИРОВАТЬ:

Также, если вы пытаетесь получить один идентификатор, вы, вероятно, должны использовать это:

https://googleapis.dev/python/datastore/latest/client.html#google.cloud.datastore.client.Client.get

client = datastore.Client()
client.get(Key('City', 325899977574122L, project=project)) 

Выборка по идентификатору выполняется быстрее, чем выполнение запроса

...