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;
- 树形评论的实现
发表评论