Как обновить объекты в пространстве имен в Datastore

У меня есть пространство имен под названием "items" с кучей свойств в нем. Одно свойство называется «IncidentLocation», а другое - «IncidentState».

В любом месте, где "IncidentLocation" имеет значение null, я хочу скопировать в него значение "IncidentState". Затем я хочу удалить свойство «IncidentState».

Я использую клиент Python для хранилища данных. Как я могу получить и обновить каждую сущность в данном пространстве имен?

Изменить: я понял, как получить объекты

from google.cloud import datastore
client = datastore.Client(project="myproject")
query = client.query(kind='spots', namespace='items')

print(list(query.fetch(10)))

Все еще не уверен, как обновить каждую сущность обратно в базу данных, хотя


person singmotor    schedule 28.04.2019    source источник


Ответы (1)


GQL не поддерживает обновления. Cloud Datastore - это не реляционная база данных, это база данных документов, поэтому вместо того, чтобы думать о столбцах, вы должны думать обо всем документе. В этом случае, похоже, вам следует подумать о запуске задания Cloud Dataflow над вашим items типом, чтобы добавить новое свойство incidentLocation.

Чтобы записать свои объекты обратно в базу данных, вы должны использовать положите. Вам следует подумать об использовании пакетов, чтобы уменьшить количество отправленных вами RPC, это должно повысить пропускную способность.

person Jim Morrison    schedule 30.04.2019
comment
Сейчас я использую клиент python, надеясь извлечь и обновить каждую сущность в базе данных. но items - это пространство имен, а не вид. узнав больше, я думаю, что обновлю этот вопрос, чтобы быть более конкретным. - person singmotor; 04.05.2019
comment
Спасибо за обновление вопроса. - person Jim Morrison; 04.05.2019