Вот очень упрощенный пример того, что мы делаем, чтобы использовать bulkloader для загрузки данных в формате JSON вместо CSV данных:
class JSONLoader(bulkloader.Loader):
def generate_records(self, filename):
for item in json.load(open(filename)):
yield item['fields']
В этом примере, я предполагаю, что формат JSON, который выглядит как
[
{
"fields": [
"a",
"b",
"c",
"d"
]
},
{
"fields": [
"e",
"f",
"g",
"h"
]
}
]
который упрощен.
В принципе, все, что вам нужно сделать, это создать подкласс bulkloader.Loader и реализовать (как минимум) метод generate_records
, который должен давать списки строк. Эта же стратегия будет работать для загрузки данных из файлов XML или файлов, зашифрованных ROT13, или любого другого.
Обратите внимание, что список строк, полученных при методе generate_records
должны совпадать (в длину и порядка) с «Свойства» список вы предоставите при инициализации загрузчика (т.е. второй аргумент метода AlbumLoader.__init__
в this example) ,
Этот подход фактически обеспечивает большую гибкость: Мы переопределение метода __init__
на нашем JSONLoader
реализации и автоматическое определение kind
модели мы загружаем и список его свойств, чтобы обеспечить к bulkloader.Loader
родительскому классу.
Как выглядят ваши входные данные? Вы просто говорите, что это не CSV. – geoffspear