appcfg.py upload_data проблема вида объекта - PullRequest
0 голосов
/ 08 апреля 2010

Я занимаюсь разработкой приложения по app-engine-path и хочу загрузить некоторые данные в хранилище данных. Например у меня есть модель

Модели / places.py:

class Place(db.Model):
    name = db.StringProperty()
    longitude = db.FloatProperty()
    latitude = db.FloatProperty()

Если я сохраню это в виду, то вид () этого объекта будет "models_place". Все в порядке, Place.all () в поле зрения работает нормально.

Но:

Если я загружу следующую строку, используя appcfg.py upload_data, тип () этих объектов будет Place.

loader.py выглядит так:

import datetime, os, sys
from google.appengine.ext import db
from google.appengine.tools import bulkloader

libs_path = os.path.join("/home/martin/myproject/src/")
if libs_path not in sys.path:
    sys.path.insert(0, libs_path)
from models import places

class AlbumLoader(bulkloader.Loader):
    def __init__(self):
      bulkloader.Loader.__init__(self, 'Place',
                                 [('name', lambda x: x.decode('utf-8')),
                                  ('longitude', float),
                                  ('latitude', float),
                                 ])
loaders = [AlbumLoader]

и команда для загрузки:

python /usr/local/google_appengine/appcfg.py upload_data --config_file=places_loader.py --kind=models_place --filename=data/places.csv --url=http://localhost:8000/remote_api /home/martin/myproject/src/

1 Ответ

1 голос
/ 08 апреля 2010

Я нашел разрешение:

place_loader.py:

from google.appengine.ext import bulkload

class PlaceLoader(bulkload.Loader):
    def __init__(self):
        bulkload.Loader.__init__(self, 'models_place',
                               [('name', lambda x: x.decode('utf-8')),
                                ('longitude', float),
                                ('latitude', float),
                               ])
if __name__ == '__main__':
    bulkload.main(PlaceLoader())

app.yaml:

- url: /load
  script: places_loader.py  

и команда:

python /usr/local/google_appengine/bulkload_client.py --filename data/places.csv --kind   models_place --url http://localhost:8000/load
...