Я столкнулся с очень противоречивой ситуацией с запросом хранилища данных.Почему второй запрос google datastore возвращает измененный экземпляр (без вызова put после первого запроса)?
вот шаги:
получить объект с первого запроса:
list_objects = MyModel.query(cls.name == name).fetch()
изменить list_objects:
for o in list_objects: o.value = new_value
получить объект 2-й раз:
list_objects_2 = MyModel.query(cls.name == name).fetch()
теперь все объекты в list_objects_2 имеют new_ значение, хотя на шаге 2, пут никогда не вызывалась на самом деле изменить хранилищу, и я проверил мой хранилищу между ними, а значение исходное значение
изменить list_objects_2:
for o in list_objects_2: o.value = new_new_value
, и теперь list_objects1 все имеют new_new_value
Я также пробовал с fetch(keys_only = True)
и k.get()
, но такой же вопрос.
Мое впечатление, что запрос противоречит фактическому хранилищу данных, почему он продолжает возвращать одни и те же экземпляры вместо создания новых? это из-за кэширования?
Не звучит правильно, вы можете дать воспроизводимый пример? – marcadian