我是NDB用户,这个对象数据库非常酷。但是如何在部署后直接为特定的默认值设定种子?是否有一些预定义的功能或标准化的数据库播种方式?
例如:
我有以下 ndb.Model ,想要某种“现有的默认父级”。
Category(ndb.Model):
name = ndb.StringProperty(required=True)
parent = ndb.KeyProperty(kind='Category',required=True,
default=<KeyOfRootCategory>)
在哪里放置以下播种值?
main_category = Category(name="all", parent=None) #this is the root category
main_category.put()
答案 0 :(得分:2)
为什么不在部署后创建一个简单的种子处理程序来调用(例如/ seeding / example)?我看到它的方式你只需要种子一次,所以不需要某种钩子。
seed.py:
class ExampleHandler(webapp2.RequestHandler):
def get(self):
# Do your thing
# Maybe use "get_or_insert()". See [1]
return
app = webapp2.WSGIApplication(
[
('/example', ExampleHandler),
],
debug=True
)
然后在你的app.yaml:
- url: /seeding/.*
script: seed.app
login: admin
最后一行至关重要。它可以保护您的播种脚本免受未经授权的访问(参见[2])。
[1] https://developers.google.com/appengine/docs/python/ndb/modelclass#Model_get_or_insert
答案 1 :(得分:2)
看起来没有专门的&#39;部署后&#39;挂钩。我只是将一些代码放入主处理程序脚本(包含&#39; webapp2.WSGIApplication(...)&#39;)中,检查根类别是否已存在,如果不存在则创建它。或者,这可能是某些处理程序操作的一部分。
答案 2 :(得分:0)
我想我明白你在问什么。
您无需创建实体即可创建父键。这将定义您的实体组。
或者,它不需要父母,但是将成为任何孩子的父母。任何没有在密钥中定义的父项的实体成为它自己的实体组的根,并且该实体组可以有1个或多个成员(即其本身和任何子项。)