0

У меня есть модель DB в AppEngine, который выглядит примерно так:Read db.StringListProperty от ОПРСА

class MyModel(db.Model): 
    my_list = db.StringListProperty() 

Есть объекты, записанные в DATASTORE с этими данными заселенных, я могу вытащить их с помощью БД и я вижу, в средстве просмотра объектов. Я работаю, чтобы перейти на ОПРС, поэтому мигрировали модель:

class MyModel(ndb.Model): 
    my_list = ndb.StringProperty(repeated=True) 

Но когда я получаю объекты из хранилища данных, my_list никогда не заполняется. Есть ли какой-то трюк для извлечения этих объектов?

ответ

1

У меня пока нет 50 репрессий, поэтому я не могу спросить в комментарии, но если вы скопировали свой код в поперечнике, я уверен, что ваша проблема в том, что вы все еще префикс «db»

это должно быть

my_list = ndb.StringProperty(repeated=True) 

https://cloud.google.com/appengine/docs/python/ndb/db_to_ndb#properties

мы также стараемся, чтобы наши индексы минимально возможным снизить затраты хранилищу записи, так что добавление индексированных = False к нему то, что мы всегда делаем.

my_list = ndb.StringProperty(repeated=True, indexed=False) 

Если это все еще не работает, вам может понадобиться посредническую функцию, чтобы захватить версию DB, и переписать его на версию ОПРС, но, насколько я знаю, что не должно быть необходимым (I не сделали миграцию db-> ОПРС сам)

в случае, если вы задавались, несмотря на различные API-интерфейсы, NDB и старый пакет ext.db писать одни и те же данные в хранилище данных. Это означает, что вам не нужно делать какое-либо преобразование в хранилище данных, и вы можете с радостью смешивать и сопоставлять NDB и код ext.db, если используемая вами схема эквивалентна. Вы можете даже преобразовать между клавишами ext.db и NDB, используя ndb.Key.from_old_key() и key.to_old_key().

+0

Спасибо за указание, что это была ошибка транспозиции/санитарии. Проверено, что код действительно использует «ndb». Миграция данных с помощью задания mapreduce может быть возможным ответом, как только я доберусь до точки, где это возможно. – Hounshell