GAE 的数据模型

Google App Engine 的数据库 API 实现与自己以前接触的有点点不同。

对于每一个储存项都一个 key,这个 key 大致类似于 'agN4c2tyEAsSCkd1ZXN0Ym9va3MYDQw' 这样的字符串。key 同时还可以拥有 id 或者 name。另外一个重要的特性就是可以指定 parent,也就是说数据表的项目可以树形组织起来。

普通的创建新项目是 newitem = Model() 即可,这样子的新项使用自动递增(?)的数字 id,parent 父项为 None。

可以采用 newitem = Model(key_name='name') 给项目指定一个 name,但是这样 id 就不再存在(item.key.id=None, item.key.name=’name’)。不过可以使用 item.key.id_or_name 来获得项目的 id 或 name。

直接获取使用 item = Model.get_by_id(id) 或者 item = Model.get_by_key_name('name')

对于 parent,创建项目是采用 newitem = Model(parent=parent_item) 当然也可以同时指定 name: newitem = Model(key_name='name',parent=parent_item)

如果要获得所有 parent 为 parent_item 的项,使用 items = Model.all().ancestor(parent_item)

综上所述,使用 GAE 的数据模型可以不依赖附加表的情况实现一些应用。比如:

  • 使用 name 作为 SEO 的自定义 url,如果没有指定就用 id;
  • 树形评论的实现

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据