0

import db 和 import datastore 有什么区别

from google.appengine.ext import db
# ore
from google.appengine.api import datastore

我试图了解如何从 cccwiki 中的页面获取名称:

class WikiPage(BaseRequestHandler):

    def index(name):
        # Loads the pages as index links with the given name.

        query = datastore.Query('Page')
        query['name ='] = name
        entities_list = query.Get(100)
4

1 回答 1

3

他们是完全不同的野兽。

  • google.appengine.api.datastore是数据存储访问 API。它类似于 SQL 数据库的数据库驱动程序。它允许您连接到数据存储并运行查询。

  • google.appengine.ext.db是一个数据建模 API。它让您对要存储在数据存储中的数据进行建模。它类似于 SQLAlchemy 和 Django 的数据建模层。它让您可以轻松地将操作转换为对数据存储的查询,从而在应用程序中表达您需要的数据。

换句话说,google.appengine.ext.db您创建一个模型并操作该模型(添加和删除实体,更改这些实体的属性)会导致对底层数据存储的查询,使用google.appengine.api.datastore.

您的WikiPage代码不使用模型;它直接查询数据存储。我相信cccwiki确实有它自己的Page类,您可以使用name参数和查询返回的数据来创建它们:

page = Page(name, entities_list[0])

结果集中的每个条目在entities_list任何情况下都是一个字典,并且内容首先取决于将内容存储在记录中的代码。在代码的情况下,我cccwiki希望看到contentuser和键。createdmodified

如果您确实使用 API 定义了一个Pagegoogle.appengine.ext.db,则使用它来查询您的页面:

q = Page.all()
q.filter('name = ', name)
page = q.get()

然后您可以访问结果的属性。

于 2012-11-02T14:27:19.607 回答