GAE загружает данные в хранилище данных без использования CSV - PullRequest
1 голос
/ 14 сентября 2009

Я использовал bulkloader.Loader для загрузки содержимого в dev-хранилище GAE и живое хранилище данных, но теперь я хочу создать объекты из данных, отличных от CSV, и поместить их в хранилище данных.

Скажем, мой объект похож на

class CainEvent(db.Model):   
    name =db.StringProperty(required=True)  
    birthdate = db.DateProperty()

Кто-нибудь может дать мне простой пример того, как это сделать, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 14 сентября 2009

Вот чрезвычайно упрощенный пример того, что мы делаем, чтобы использовать загрузчик для загрузки данных 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__ в этот пример ).

Этот подход на самом деле обеспечивает большую гибкость: мы переопределяем метод __init__ в нашей реализации JSONLoader и автоматически определяем kind модели, которую мы загружаем, и ее список свойств, предоставляемых bulkloader.Loader родительский класс.

0 голосов
/ 16 октября 2009

Вы можете найти этот пост полезным - он подробно описывает, как загружать данные непосредственно из СУБД, но в равной степени относится к загрузке из любого другого источника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...