Ошибка App Engine BadValueError при массовой загрузке данных — TextProperty интерпретируется как StringProperty

объемная загрузка.yaml:

transformers: 
    - kind: ExampleModel 
      connector: csv 
      property_map: 
        - property: __key__ 
          external_name: key 
          export_transform: transform.key_id_or_name_as_string 
        - property: data 
          external_name: data 
        - property: type 
          external_name: type 

модель.py:

class ExampleModel(db.Model): 
        data = db.TextProperty(required=True) 
        type = db.StringProperty(required=True) 

Вроде все нормально, но при загрузке получаю ошибку: BadValueError: Property data is 24788 bytes long; it must be 500 or less. Consider Text instead, which can store strings of any length.

По какой-то причине он считает данные строковым свойством.

Кто-нибудь знает, как я могу это исправить?


person Matthew H    schedule 08.08.2010    source источник


Ответы (1)


Вам нужно указать преобразование импорта для текстового поля, например:

- property: data
  external_name: data
  import_transform: db.Text
person Nick Johnson    schedule 08.08.2010
comment
Спасибо. Но теперь я получаю: Ошибка синтаксического анализа файла yaml: невозможно присвоить значение «db.Text» атрибуту «import_transform»: неверный код для import_transform. Код: db.Text. Подробности: имя 'db' не определено в bulkloader.yaml, строка 33, столбец 29. - person Matthew H; 08.08.2010
comment
Вам нужно добавить google.appengine.ext import db в раздел импорта Python. - person Nick Johnson; 08.08.2010
comment
Ах! Это было так просто. ›_› Спасибо, Ник! - person Matthew H; 08.08.2010
comment
Привет, Ник! Я добавил import_transform: db.Text в bulkloader.yaml, но все еще вижу ошибку: BadValueError: Property story_html имеет длину 3132 байта; должно быть 500 или меньше. Вместо этого рассмотрите Text, который может хранить строки любой длины. - person ehfeng; 16.10.2011
comment
Спасибо, Ник, это было полезно! :) - person Amyth; 31.05.2012