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れたコードに依存します。コードの場合、、、およびキーが表示されると予想されます。cccwikicontentusercreatedmodified

API を使用して定義されたクラスがある場合、代わりにそれを使用してページをクエリします。Pagegoogle.appengine.ext.db

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

その後、結果の属性にアクセスできます。

于 2012-11-02T14:27:19.607 に答える