Что делать со сценарием GAE Bulk Uploader с пустыми значениями в CSV?

Я настроил свои файлы app.yaml и data_uploader, как это предлагается в этом документе. В моем CSV-файле есть нулевые значения (в экспортированной электронной таблице было несколько пустых ячеек).

Когда я запускаю сценарий, я получаю эту ошибку в файле журнала: [ОШИБКА] Ошибка в WorkerThread-0: значение не должно быть пустым; получено [].

Я предполагаю, что это связано с тем, что некоторые значения пусты в файле csv. Как я могу убедиться, что пустые значения либо импортированы как '' в хранилище данных, либо вообще не импортированы (все свойства модели являются необязательными).

Спасибо, Дэвид.


person David Haddad    schedule 11.10.2010    source источник
comment
Взгляните на этот раздел документации: code.google. com/appengine/docs/python/tools/ Вы можете настроить способ импорта данных в bulkloader.yaml   -  person Franck    schedule 11.10.2010


Ответы (1)


Вы, вероятно, должны настроить свой bulkloader.yaml, указав правильную директиву в разделе карты свойств.

Проверьте, установлен ли элемент import_transform в свойстве вида вашей модели, который создает проблему, и попробуйте использовать директиву none_if_empty.

- property: fooproperty
  external_name: fooproperty
  import_transform: transform.none_if_empty(foopropertytype)

Это то, что none_if_empty делает:

def none_if_empty(fn):
  """A wrapper for a value to return None if it's empty. Useful on import.

  Can be used in config files (e.g. "transform.none_if_empty(int)" or
  as a decorator.

  Args:
    fn: Single argument transform function.

  Returns:
    Wrapped function.
  """

  def wrapper(value):
    if value == '' or value is None:
      return None
    return fn(value)

  return wrapper

На самом деле, bulkloader создает файл bulkloader.yaml, определяя правильную конфигурацию, используя статистику производственного хранилища данных; просто проверьте правильность сделанных предположений.

person systempuntoout    schedule 03.11.2010