Прямого перевода нет.В хранилище данных действительно нет концепции обновлений;все, что вы можете сделать, это перезаписать старые сущности новой сущностью по тому же адресу (ключу).Чтобы изменить объект, вы должны извлечь его из хранилища данных, изменить его локально, а затем сохранить обратно.
Также нет эквивалента оператору LIKE.Хотя сопоставление суффиксов с подстановочными знаками возможно с некоторыми хитростями, если вы хотите сопоставить «% Salt%», вам придется читать каждую отдельную сущность в память и выполнять сравнение строк локально.
Так что это не будетстоль же чистый или эффективный как SQL.Это компромисс с большинством распределенных хранилищ объектов, и хранилище данных не является исключением.
Тем не менее, библиотека картографирования доступна для облегчения таких пакетных обновлений.Следуйте примеру и используйте что-то подобное для вашей process
функции:
def process(entity):
if entity.city.startswith('Salt'):
entity.city = entity.city.replace('Salt', 'Olympic')
yield op.db.Put(entity)
Есть и другие альтернативы, кроме картографа.Самый важный совет по оптимизации - это пакетные обновления;не сохраняйте обратно каждый обновленный объект индивидуально.Если вы используете маппер и put yield, это обрабатывается автоматически.