导入数据库和导入数据存储区之间有什么区别
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)
答案 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
代码,我希望看到content
,user
,created
和modified
代码。
如果 使用Page
API定义了google.appengine.ext.db
类,请使用该类来查询您的网页:
q = Page.all()
q.filter('name = ', name)
page = q.get()
然后您可以访问结果的属性。