【发布时间】:2011-02-05 16:41:27
【问题描述】:
我正在 app-engine-path 上开发应用程序,我想将一些数据上传到数据存储区。 例如我有一个模型
models/places.py:
class Place(db.Model):
name = db.StringProperty()
longitude = db.FloatProperty()
latitude = db.FloatProperty()
如果我把它保存在视图中,这个实体的 kind() 是“models_place”。 一切正常,视图中的 Place.all() 工作正常。
但是:
如果我使用 appcfg.py upload_data 上传下一行,则该实体的 kind() 是 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/
【问题讨论】:
-
发生这种情况是因为您正在使用 App Engine Patch,它会修改 Model 类以在种类名称中包含命名空间 - 但前提是它已被导入。
标签: python django google-app-engine google-cloud-datastore app-engine-patch