Python 导入数据库和导入数据存储之间有什么区别
导入数据库和导入数据存储之间有什么区别Python 导入数据库和导入数据存储之间有什么区别,python,google-app-engine,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.
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)
他们是完全不同的动物
是数据存储访问api。它类似于SQL数据库的数据库驱动程序。它允许您连接到数据存储并运行查询google.appengine.api.datastore
是一个数据建模API。它使您能够对要存储在数据存储中的数据进行建模。它类似于SQLAlchemy和Django的数据建模层。它让您可以用术语来表达应用程序中所需的数据,从而便于将操作转换为数据存储的查询google.appengine.ext.db
google.appengine.ext.db
创建一个模型,并使用google.appengine.api.datastore
操作该模型(添加和删除实体,更改这些实体的属性)查询底层数据存储
你的WikiPage
代码没有使用模型;它直接查询数据存储。我相信cccwiki
确实有自己的Page
类,您可以使用name
参数和查询返回的数据创建这些类:
page = Page(name, entities_list[0])
在任何情况下,entities\u列表
结果集中的每个条目都是一个字典,其内容取决于首先在记录中存储内容的代码。对于cccwiki
代码,我希望看到内容
,用户
,创建的
和修改的
键
如果您确实有一个使用google.appengine.ext.db
API定义的Page
类,则使用该类来查询您的页面:
q = Page.all()
q.filter('name = ', name)
page = q.get()
然后您可以访问结果的属性。它们完全不同
是数据存储访问api。它类似于SQL数据库的数据库驱动程序。它允许您连接到数据存储并运行查询google.appengine.api.datastore
是一个数据建模API。它使您能够对要存储在数据存储中的数据进行建模。它类似于SQLAlchemy和Django的数据建模层。它让您可以用术语来表达应用程序中所需的数据,从而便于将操作转换为数据存储的查询google.appengine.ext.db
google.appengine.ext.db
创建一个模型,并使用google.appengine.api.datastore
操作该模型(添加和删除实体,更改这些实体的属性)查询底层数据存储
你的WikiPage
代码没有使用模型;它直接查询数据存储。我相信cccwiki
确实有自己的Page
类,您可以使用name
参数和查询返回的数据创建这些类:
page = Page(name, entities_list[0])
在任何情况下,entities\u列表
结果集中的每个条目都是一个字典,其内容取决于首先在记录中存储内容的代码。对于cccwiki
代码,我希望看到内容
,用户
,创建的
和修改的
键
如果您确实有一个使用google.appengine.ext.db
API定义的Page
类,则使用该类来查询您的页面:
q = Page.all()
q.filter('name = ', name)
page = q.get()
然后您可以访问结果的属性。tl;dr:
api.datastore
是低级的,没有公开的文档,除非你真的知道自己在做什么,否则不应该使用它;dr:api.datastore
是低级的,没有公开的文档,除非你真的知道自己在做什么,否则不应该使用它。