0

我正在應用程序引擎路徑上開發應用程序,我想將一些數據上傳到數據存儲區。 比如我有一個模型appcfg.py upload_data實體類問題

型號/ places.py:

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

如果我把它保存在視圖中,一種()的這個實體是 「models_place」。 一切正常,Place.all()在視圖中正常工作。

但是:

如果我使用appcfg.py upload_data,那種()這個實體是將上傳一些下一行。

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/ 
+0

發生這種情況,因爲你正在使用App Engine的補丁,其中修改Model類包括在樣的名字命名空間 - 但只有當它被導入。 – 2010-04-08 14:23:57

回答

1

我發現分辨率:

places_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()) 

應用.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