import db和import datastore之间有什么区别

时间:2012-11-02 13:58:44

标签: python google-app-engine

导入数据库和导入数据存储区之间有什么区别

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)

1 个答案:

答案 0 :(得分:3)

他们是完全不同的野兽。

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

  • google.appengine.ext.db是一个数据建模API。它允许您为要存储在数据存储区中的数据建模。它类似于SQLAlchemy和Django的数据建模层。它允许您在应用程序中表达所需的数据,以便将操作转换为查询到数据存储区。

换句话说,使用google.appengine.ext.db创建模型,并操纵该模型(添加和删除实体,更改这些实体的属性)会导致使用google.appengine.api.datastore对基础数据存储区进行查询。 / p>

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

page = Page(name, entities_list[0])

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

如果 使用Page API定义了google.appengine.ext.db类,请使用该类来查询您的网页:

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

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