google.appengine.ext.ndb パッケージ

概要

NDB – Google App Engine Python ランタイム用の新しいデータストア API。

サブモジュール

google.appengine.ext.ndb.blobstore

Blobstore の NDB インターフェース。

google.appengine.ext.ndb.context

Context クラス。

google.appengine.ext.ndb.django_middleware

NDB の Django ミドルウェア。

google.appengine.ext.ndb.eventloop

イベントループ。

google.appengine.ext.ndb.google_imports

Google App Engine モジュールのインポート元を動的に決定します。

google.appengine.ext.ndb.key

Key クラス、および関連するユーティリティ。

google.appengine.ext.ndb.metadata

アプリのデータストア メタデータにアクセスするためのモデルとヘルパー関数。

google.appengine.ext.ndb.model

モデルとプロパティのクラス、関連事項

google.appengine.ext.ndb.msgprop

MessageProperty - ProtoRPC Message オブジェクトを格納するプロパティ。

google.appengine.ext.ndb.polymodel

ポリモーフィック モデルおよびクエリ。

google.appengine.ext.ndb.query

高レベルのクエリラッパー。

google.appengine.ext.ndb.stats

アプリ固有のデータストア使用統計情報にアクセスする際に使用されるモデル。

google.appengine.ext.ndb.tasklets

タスクレット デコレータ。

google.appengine.ext.ndb.utils

NDB によって内部的に使用される低レベルのユーティリティ。

内容

google.appengine.ext.ndb.Return

StopIteration のエイリアス

google.appengine.ext.ndb.tasklet(func)ソース
google.appengine.ext.ndb.synctasklet(func)ソース

呼び出されたときにタスクレットとして機能するデコレータ。

これを使用して、いくつかのウェブ アプリケーション フレームワーク(Django ビュー関数や webapp.RequestHandler.get メソッドなど)によって呼び出されるリクエスト ハンドラ関数をラップします。

google.appengine.ext.ndb.toplevel(func)ソース

新しいデフォルト Context を設定する同期タスクレット。

webapp.RequestHandler.get() または Django ビュー関数などのトップビュー機能に使用します。

google.appengine.ext.ndb.sleep(dt)ソース

指定した時間だけスリープ状態になる公開関数。

yield tasklets.sleep(0.5) # 0.5 秒スリープ。

google.appengine.ext.ndb.add_flow_exception(exc)ソース

ログに記録されない例外を追加します。

引数は Exception のサブクラスでなければなりません。

google.appengine.ext.ndb.get_return_value(err)ソース
google.appengine.ext.ndb.get_context()ソース
google.appengine.ext.ndb.set_context(new_context)ソース
google.appengine.ext.ndb.make_default_context()ソース
google.appengine.ext.ndb.make_context(*args, **kwds)ソース
class google.appengine.ext.ndb.Future(info=None)ソース

ベース: オブジェクト

Future には 0 以上のコールバックがあります。

コールバックは、結果の準備が整うと呼び出されます。

注: 多少の着想は含まれていますが、PEP 3148 で定義された Future インターフェースに準拠していません。また、着想を含む(多少互換性を持たせようとする)App Engine 固有の UserRPC クラスと MultiRpc クラスです。

FINISHING = 2
IDLE = 0
RUNNING = 1
add_callback(callback, *args, **kwds)ソース
add_immediate_callback(callback, *args, **kwds)ソース
check_success()ソース
done()ソース
dump()ソース
dump_stack()ソース
get_exception()ソース
get_result()ソース
get_traceback()ソース
set_exception(exc, tb=None)ソース
set_result(result)ソース
state
wait()ソース
classmethod wait_all(futures)ソース
classmethod wait_any(futures)ソース
class google.appengine.ext.ndb.MultiFuture(info=None)ソース

ベース: google.appengine.ext.ndb.tasklets.Future

他の複数の Future に依存する Future。

これは「v1、v2、… = yield f1、f2、…」によって内部的に使用されます。セマンティクス(たとえば、エラー処理)は、そのユースケースによって制約されます。

呼び出し元の観点からのプロトコルは次のとおりです。

mf = MultiFuture()
mf.add_dependent(<some other Future>)  -OR- mf.putq(<some value>)
mf.add_dependent(<some other Future>)  -OR- mf.putq(<some value>)
  .
  . (More mf.add_dependent() and/or mf.putq() calls)
  .
mf.complete()  # No more dependents will be added.
  .
  . (Time passes)
  .
results = mf.get_result()

results はすべての従属 Future の結果のリストで、追加された順に表示されています。

同じ従属 Future を複数回追加できます。

コールバックはいつでも追加できます。

従属 Future の観点からすると、何もする必要はありません。コールバックは自動的に各従属 Future に追加され、MultiFuture へ追加の完了を知らせます。

エラー処理: 従属 Future がエラーになると、mf に伝播します。早期エラーを強制するには、mf.complete() の代わりに mf.set_exception() を呼び出すことができます。その後は、mf.add_dependent() または mf.putq() を呼び出すことはできません。

add_dependent(fut)ソース
complete()ソース
putq(value)ソース
set_exception(exc, tb=None)ソース
class google.appengine.ext.ndb.QueueFuture(info=None)ソース

ベース: google.appengine.ext.ndb.tasklets.Future

MultiFuture と同じプロトコルに従うキュー。

ただし、結果をリストとして返す代わりに、すぐに結果が取得できるように getq() を使用して、一度に 1 つずつ取得できます。最後の結果が準備できると、Future 自体は(結果の取得に関係なく)None という結果で終了します。

getq() メソッドは、次の結果が準備できるまでブロックする Future を返し、その結果を返します。getq() 呼び出しはそれぞれ、一意の結果を 1 つ取得します。最後の結果が返された後にさらに getq() を呼び出すと、Future の例外として EOFError が返されます(つまり、q.getq() は常に Future を返しますが、Future は EOFError を発生させます)。

注: 値は .putq(value) を使用して直接 push することもできます。ただし、フロー制御はありません。プロデューサーがコンシューマよりも高速であれば、キューは無制限に拡大します。

add_dependent(fut)ソース
complete()ソース
getq()ソース
putq(value)ソース
set_exception(exc, tb=None)ソース
class google.appengine.ext.ndb.SerialQueueFuture(info=None)ソース

ベース: google.appengine.ext.ndb.tasklets.Future

QueueFuture と似ていますが、挿入順序は維持されます。

このクラスは、クエリ オペレーションで使用されます。

不変条件:

  • _queue と _waiting の少なくとも 1 つは空です。

  • _waiting の Future は常に保留中です。

(_queue の Future は保留中または完了している可能性があります)

以下の説明では、add_dependent() は putq() と同様に扱われています。

putq() が getq() よりも前にある場合、次のようになります。

putq() v

_queue: [f1, f2, …]; _waiting: [] ^ getq()

ここで、putq() は _queue の右側に Future を追加し、getq() は左側から Future を削除します。

getq() が putq() よりも前にある場合、次のようになります。

putq() v

_queue: []; _waiting: [f1, f2, …]

^ getq()

ここで、putq() は _waiting の左側から Future を削除し、getq() は Future を右側に追加します。

両方が空の場合、putq() は _queue の右側に Future を追加し、getq() は _waiting の右側に Future を追加します。

_full フラグは、putq() がそれ以上呼び出されなくなることを意味します。complete() または set_exception() のいずれかを呼び出して設定されます。

complete() を呼び出すと、putq() がそれ以上呼び出されなくなります。getq() が後ろにあると、後続の getq() 呼び出しは空になるまで _queue を使い果たし、その後は EOFError を渡す Future を返します(getq() 自体は EOFError を発生させません)。complete() が呼び出されたときに getq() が先行していると、_waiting の Future はすべて EOFError 例外を受け取ります(それによって _waiting を使い果たします)。

complete() の代わりに set_exception() が呼び出された場合、そこで設定された例外とトレースバックが EOFError の代わりに使用されます。

add_dependent(fut)ソース
complete()ソース
getq()ソース
putq(value)ソース
set_exception(exc, tb=None)ソース
class google.appengine.ext.ndb.ReducingFuture(reducer, info=None, batch_size=20)ソース

ベース: google.appengine.ext.ndb.tasklets.Future

MultiFuture と同じプロトコルに従うキュー。

ただし、結果は、従属 Future の結果のリストではなく、「レデューサ」タスクレットを呼び出すことによって計算されます。レデューサ タスクレットには値のリストが必要で、1 つの値を返します。値のサブリストに対して複数回呼び出すことができ、sum() などのように動作します。

注: レデューサ入力値は、キューに追加された順序と比較して並べ替えることができます。

add_dependent(fut)ソース
complete()ソース
putq(value)ソース
set_exception(exc, tb=None)ソース
class google.appengine.ext.ndb.Keyソース

ベース: オブジェクト

不変のデータストア キー。

柔軟性と利便性を高めるため、複数のコンストラクタ署名がサポートされます。

キーを構築する主な方法では、次の固定引数を使用します。 - Key(kind1, id1, kind2, id2, …)。

これは次の 2 つの長い式の省略形です。 - Key(pairs=[(kind1, id1), (kind2, id2), …]) - Key(flat=[kind1, id1, kind2, id2, …])

上のコンストラクタ フォームのいずれかが、parent=<key> を使用して別のキーに追加で渡すことができます。(kind, id) ペアが明示的に渡される前に、親キーの (kind, id) ペアが挿入されます。

次の「url-safe」でエンコードされた文字列からキーを構築することもできます。 - Key(urlsafe=<string>)

秘密にするために、次のコンストラクタが存在します。 - Key(reference=<reference>) - 下位レベルの Reference オブジェクトに渡します - Key(serialized=<string>) - シリアル化された下位レベルの Reference に渡します - Key(<dict>) - 非ピクル化用。Key(**<dict>) と同じです

「url-safe」文字列はウェブセーフな Base64 エンコードのシリアル化された Reference ですが、不透明な一意の文字列だと考えることをおすすめします。

追加コンストラクタ キーワード引数: - app=<string> - アプリケーション ID を指定します - namespace=<string> - 名前空間を指定します

Reference が渡された場合(シリアル化された、または urlsafe のリファレンスの 1 つを使用します)、引数と名前空間のキーワードはすでに Reference に存在するものに一致する必要があります(必要に応じてデコーディング後)。親キーワードはいかなる形態の Reference とも組み合わせられません。

キーは不変であるため、いったん作成された Key オブジェクトは変更できません。これは Python の許可と同様、実装によって適用されます。

キーのコンテンツにアクセスするために、次のメソッドとオペレーションがサポートされます。

  • repr(key), str(key) - 最も短いコンストラクタ フォームと似た文字列表現を返し、デフォルト値と異ならない場合はアプリと名前空間は省略します。

  • key1 == key2, key1 != key2 - キー間が等価であることを比較。

  • hash(key) - キーを dict に保存するために十分なハッシュ値。

  • key.pairs() - (kind, id) ペアのタプル。

  • key.flat() - 平坦化した kind と id の値のタプル。つまり (kind1, id1, kind2, id2, …)。

  • key.app() - アプリケーション ID。

  • key.id() - 最後の (kind, id) ペアの文字列 / 整数 ID。キーが不完全な場合は None を返します。

  • key.string_id() - 最後の (kind, id) ペアの文字列 ID。キーが整数 ID を持つ場合や、キーが不完全な場合は None を返します。

  • key.integer_id() - 最後の (kind, id) ペアの整数 ID。キーが文字列 ID を持つ場合や、キーが不完全な場合は None を返します。

  • key.namespace() - 名前空間。

  • key.kind() - key.pairs()[-1][0] のショートカット。

  • key.parent() - 最後の (kind, id) ペア以外のすべてのペアから構築されたキー。

  • key.urlsafe() - ウェブセーフの Base64 にエンコードされた、シリアル化されたリファレンス。

  • key.serialized() - シリアル化されたリファレンス。

  • key.reference() - リファレンス オブジェクト。呼び出し元は変更しないよう保証します。

キーはデータストアとのやりとりもサポートします。これらは I/O アクティビティに関与する唯一のメソッドです。Future オブジェクトについては、ndb/tasklets.py のドキュメントをご覧ください。

  • key.get() - キーのエンティティを返します。

  • key.get_async() - 最終的な結果がキーのエンティティになる Future を返します。

  • key.delete() - キーのエンティティを削除します。

  • key.delete_async() - キーのエンティティを非同期に削除します。

キーはピクル化されることがあります。

キーのサブクラス化は避けるべきですが、適切に処理することが難しい作業です。

app()ソース

アプリケーション ID を返します。

delete(**ctx_options)ソース

このキーのエンティティを同期的に削除します。

このようなエンティティが存在しない場合、操作は実行されません。

delete_async(**ctx_options)ソース

このキーのエンティティの削除をスケジュールします。

これは Future を返します。この結果は削除が完了すると利用できるようになります。このようなエンティティが存在しない場合でも Future が返されます。すべてのケースで Future の結果は None です(つまり、エンティティが存在したか否かを確認する方法はありません)。

flat()ソース

交互に kind と id の値のタプルを返します。

classmethod from_old_key(old_key)ソース
get(**ctx_options)ソース

このキーのエンティティを同期的に取得します。

このようなエンティティが存在しない場合、None を返します。

get_async(**ctx_options)ソース

結果がこのキーのエンティティである Future を返します。

このようなエンティティが存在しない場合でも Future が返され、Future が最終的に返す結果は None になります。

id()ソース

最後の (kind, id) ペアの文字列 / 整数 ID を返します(該当する場合)。

戻り値

文字列 / 整数 ID。キーが不透明な場合は、None を返します。

integer_id()ソース

最後の (kind, id) ペアの整数 ID を返します(該当する場合)。

戻り値

整数 ID を返すか、キーが文字列 ID を持つ場合や、キーが不透明な場合は、None を返します。

kind()ソース

参照されるエンティティの種類を返します。

これは、最後の (kind, id) ペアからの kind です。

namespace()ソース

名前空間を返します。

pairs()ソース

(kind, id) ペアのタプルを返します。

parent()ソース

最後の (kind, id) ペア以外のすべてのペアから構築されたキーを返します。

(kind, id) ペアが 1 つしか存在しない場合、None を返します。

reference()ソース

このキーのリファレンス オブジェクトを返します。

これは entity_pb.Reference インスタンスで、下位レベルの API がデータストアに使用するプロトコル バッファクラスです。

注: 呼び出し元は戻り値を変更すべきではありません。

root()ソース

ルートキーを返します。これはそれ自身か最上位の親です。

serialized()ソース

このキーのシリアル化されたリファレンス オブジェクトを返します。

string_id()ソース

最後の (kind, id) ペアの文字列 ID を返します(該当する場合)。

戻り値

文字列 ID を返すか、キーが整数 ID を持つ場合や、キーが不透明な場合は None を返します。

to_old_key()ソース
urlsafe()ソース

このキーの Reference をエンコードする URL セーフな文字列を返します。

この文字列はその他の API や言語と互換性があり、GQL および App Engine 管理コンソール内のキーを表すのに使用されます。

class google.appengine.ext.ndb.BlobKey(blob_key)ソース

ベース: オブジェクト

Blobstore の blob を識別するために使用されるキー。

このオブジェクトはアプリケーションの blob を識別するために、Blobstore API によって内部的に使用される文字列をラップします。BlobKey は基盤となる BlobReference エンティティのエンティティ名に対応します。

このクラスは google.appengine.ext.db と google.appengine.ext.blobstore の両方で API で公開されます。

ToXml()ソース
class google.appengine.ext.ndb.GeoPt(lat, lon=None)ソース

ベース: オブジェクト

地理的位置は、浮動小数点型緯度と経度の座標によって指定されます。Google マップのようなマッピング サイトと統合させるためによく使用されます。ICBM 座標としても使用できます。

これは georss:point 要素です。XML 出力では、座標は lat 属性および lon 属性として提供されます。参照: http://georss.org/

「<lat>, <lon>」にシリアル化します。無効にシリアル化された文字列が渡された場合、または緯度と経度がそれぞれ [-90, 90] および [-180, 180] の範囲内にある有効な浮動小数点型ではない場合、BadValueError が発生します。

ToXml()ソース
lat = None
lon = None
exception google.appengine.ext.ndb.Rollbackソース

ベース: google.appengine.api.datastore_errors.Error

commit する代わりにロールバックを必要とする場合に、トランザクション関数によって発生する場合があります。トランザクション関数によって発生したいかなる例外も、ロールバックを引き起こす可能性があるので注意してください。これは純粋に利便性のためです。データストアをご覧ください。詳細は RunInTransaction をご覧ください。

class google.appengine.ext.ndb.Indexソース

ベース: google.appengine.ext.ndb.model._NotEqualMixin

インデックスを表す不変オブジェクトです。

ancestor

上位のインデックスであるかどうかにかかわらず、ブール値です。

kind

インデックスに登録されている種類を示す文字列。

properties 

インデックスに登録されているプロパティを提供する PropertyIndex オブジェクトのリスト。

class google.appengine.ext.ndb.IndexStateソース

ベース: google.appengine.ext.ndb.model._NotEqualMixin

インデックスとその状態を表す不変オブジェクト。

definition

インデックスを表すインデックス オブジェクト。

id

インデックス ID を示す整数。

state

インデックスの状態を示す文字列。

有効な値は「error」、「deleting」、「serving」、「building」です。

class google.appengine.ext.ndb.IndexPropertyソース

ベース: google.appengine.ext.ndb.model._NotEqualMixin

インデックス内の単一のプロパティを表す不変オブジェクト。

direction

このプロパティのインデックスにある並べ替え方向。「asc」または「desc」。

name

インデックスに登録されているプロパティ名を示す文字列。

class google.appengine.ext.ndb.ModelAdapter(default_model=None, id_resolver=None)ソース

ベース: google.appengine.datastore.datastore_rpc.AbstractAdapter

「our」Key クラスと Model クラスおよび Protocol Buffer 間の変換。

Connection オブジェクトの構築に必要で、次に Context オブジェクトの構築に必要です。

署名の詳細については、基本クラスの docstring をご覧ください。

entity_to_pb(ent)ソース
key_to_pb(key)ソース
pb_to_entity(pb)ソース
pb_to_index(pb)ソース
pb_to_key(pb)ソース
class google.appengine.ext.ndb.ModelAttributeソース

ベース: オブジェクト

_fix_up() メソッドの存在を示す基本クラス。

class google.appengine.ext.ndb.ModelKeyソース

ベース: google.appengine.ext.ndb.model.Property

Model キーを保存する特別なプロパティ。

class google.appengine.ext.ndb.MetaModel(name, bases, classdict)ソース

ベース: タイプ

モデルのメタクラス。

プロパティを用意するために存在し、名前を知る必要があります。 これは、クラスの _fix_properties() メソッドを呼び出すことで実現します。

class google.appengine.ext.ndb.Model(*args, **kwds)ソース

ベース: google.appengine.ext.ndb.model._NotEqualMixin

Cloud Datastore エンティティを記述するクラス。

通常、モデル インスタンスはエンティティと呼ばれます。クラスが定義されると Model から継承するすべてのモデルクラスは MetaModel を自動的にメタクラスに持ち、プロパティがクラスの後に適切に設定されるようにします。

このため、複数のプロパティを表すのに同じ Property オブジェクトは使用できません。プロパティごとに個別の Property オブジェクトを作成する必要があります。たとえば、以下のように記述しても機能しません。

wrong_prop = StringProperty()
class Wrong(Model):
  wrong1 = wrong_prop
  wrong2 = wrong_prop

kind は通常、クラス名と同じです(ただし、モジュール名やその他の親スコープは除きます)。kind をオーバーライドするには、次のように _get_kind() という名前のクラスメソッドを定義します。

class MyModel(Model):
  @classmethod
  def _get_kind(cls):
    return 'AnotherKind'
classmethod allocate_ids(size=None, max=None, parent=None, **ctx_options)ソース

このモデルクラスに対してキー ID を割り当てます。

パラメータ
  • size – 割り当てる ID の数。size または max のいずれかを指定できます。両方は指定できません。

  • max – 割り当てる ID の最大数。size または max のいずれかを指定できます。両方は指定できません。

  • parent – ID を割り当てる親キー。

  • **ctx_options – コンテキスト オプション。

戻り値

割り当てた範囲の(start、end)を備えたタプル(両端を含みます)。

classmethod allocate_ids_async(size=None, max=None, parent=None, **ctx_options)ソース

このモデルクラスに対してキー ID を割り当てます。

Model._allocate_ids() の非同期バージョン。

classmethod get_by_id(*args, **kwds)ソース

ID によってモデルクラスのインスタンスを返します。

これは Key(cls, id, …).get() の省略形にすぎません。

パラメータ
  • id – 文字列または整数のキー ID。

  • parent – 取得するモデルのオプションの親キー。

  • namespace – オプションの名前空間。

  • app – オプションのアプリ ID。

  • **ctx_options – コンテキスト オプション。

戻り値

モデル インスタンス、または見つからない場合は、None。

classmethod get_by_id_async(*args, **kwds)ソース

ID(およびアプリ、名前空間)によってモデルクラスのインスタンスを返します。

これは Model._get_by_id() の非同期バージョンです。

classmethod get_or_insert(*args, **kwds)ソース

トランザクション上で、既存のエンティティを取得します。存在しない場合は、新しいエンティティを作成します。

固定引数:

name: 取得または作成するキー名。

キーワード引数
  • namespace – オプションの名前空間。

  • app – オプションのアプリ ID。

  • parent – 親エンティティ キー(該当する場合)。

  • context_options – ContextOptions オブジェクト(キーワード引数ではありません)または None。

  • **kwds – 指定したキー名のインスタンスがすでに存在していない場合、モデルクラスのコンストラクタに渡すキーワード引数。指定された key_name と親のインスタンスがすでに存在している場合、これらの引数は破棄されます。

戻り値

指定したキー名と親を持つ Model クラスの既存のインスタンス、あるいは新規作成されたインスタンス。

classmethod get_or_insert_async(*args, **kwds)ソース

トランザクション上で、既存のエンティティを取得します。存在しない場合は、新しいエンティティを作成します。

これは Model._get_or_insert() の非同期バージョンです。

classmethod gql(query_string, *args, **kwds)ソース

GQL クエリを実行します。

has_complete_key()ソース

このエンティティに完全なキーがあるかどうかを返します。

key

Model キーを保存する特別なプロパティ。

populate(**kwds)ソース

キーワード引数からインスタンスを入力します。

各キーワード引数は、対応するプロパティを設定するために使用されます。キーワードは有効なプロパティ名を参照する必要があります。これは Model コンストラクタに引数を渡す場合と似ていますが、キー、ID、親のプロビジョニングは作成されません。

put(**ctx_options)ソース

このエンティティを Cloud Datastore に書き込みます。

オペレーションでキーを作成するか完了させた場合、エンティティのキー属性は新しい完全なキーに設定されます。

戻り値

エンティティのキー。常に完全なキーになります。

put_async(**ctx_options)ソース

このエンティティを Cloud Datastore に書き込みます。

これは Model._put() の非同期バージョンです。

classmethod query(*args, **kwds)ソース

このクラスのクエリ オブジェクトを作成します。

パラメータ
  • distinct – オプションのブール値、group_by = projection の省略表現。

  • *args – 初期フィルタを適用するために使用されます。

  • **kwds – Query() コンストラクタに渡されます。

戻り値

Query オブジェクト。

to_dict(*args, **kwds)ソース

エンティティのプロパティ値を含む dict を返します。

パラメータ
  • include – 含めるプロパティ名のオプションのセット(デフォルトではすべてが対象)。

  • exclude – スキップするプロパティ名のオプションのセット(デフォルトではなし)。 include と exclude の両方に含まれる名前は除外されます。

class google.appengine.ext.ndb.Expando(*args, **kwds)ソース

ベース: google.appengine.ext.ndb.model.Model

動的プロパティの名前とタイプをサポートする Model サブクラス。

詳細については、モジュール docstring をご覧ください。

google.appengine.ext.ndb.transaction(*args, **kwds)ソース

トランザクション内でコールバックを実行します。

パラメータ
  • callback – 呼び出される関数またはタスクレット。

  • **ctx_options – トランザクション オプション。

有用なオプションは次のとおりです。

retries=N: 最大で N 回再試行します(つまり、最大で N+1 回試行します)。 propagation=<flag>: <flag> が次のいずれかの場合、

既存のトランザクションの伝搬方法を決定します。 TransactionOptions.NESTED: ネストされたトランザクションを開始します(これは

デフォルトですが、実際にはネストされたトランザクションがまだ実装されていないため、既存のトランザクション外でのみ使用できます)。

TransactionOptions.MANDATORY: トランザクションはすでに処理中です。TransactionOptions.ALLOWED: トランザクションが処理中の場合、参加します。TransactionOptions.INDEPENDENT: 新しい並列トランザクションを常に開始します。

xg=True: 高レプリケーション データストア上でクロスグループ

トランザクションを有効にし、最大 5 個のエンティティ グループへの書き込みを許可します。

read_only=True: トランザクションは何も書き込みを行わないことを示します。

スループットを向上させることができる可能性があります。

警告: 伝搬フラグに NESTED 以外を使用すると、結果がおかしくなる可能性があります。ALLOWED または MANDATORY を使用するときに例外が発生している場合は、トランザクションの commit は安全ではない可能性があります。INDEPENDENT を使用する場合、呼び出し元へ読み取り値を返すのは通常は安全ではありません(呼び出し元のトランザクションを読み取っていないため)。

戻り値

callback() が返す値はすべて。

発生
  • callback() が発生させるものはすべて。datastore_errors.TransactionFailedError など。

  • トランザクションが失敗した場合。

google.appengine.ext.ndb.transaction_async(*args, **kwds)ソース

トランザクション内でコールバックを実行します。

これは transaction() の非同期バージョンです。

google.appengine.ext.ndb.in_transaction()ソース

トランザクションが現在有効になっているかを返します。

google.appengine.ext.ndb.transactional(_func=None, **options)ソース
google.appengine.ext.ndb.transactional_async(_func=None, **options)ソース
google.appengine.ext.ndb.transactional_tasklet(_func=None, **options)ソース
google.appengine.ext.ndb.non_transactional(_func=None, **options)ソース
google.appengine.ext.ndb.get_multi(keys, **ctx_options)ソース

一連のキーをフェッチします。

パラメータ
  • keys – 一連のキー。

  • **ctx_options – コンテキスト オプション。

戻り値

アイテムが Model インスタンスであるか、キーが見つからない場合は None であるリスト。

google.appengine.ext.ndb.get_multi_async(keys, **ctx_options)ソース

一連のキーをフェッチします。

パラメータ
  • keys – 一連のキー。

  • **ctx_options – コンテキスト オプション。

戻り値

futures のリスト。

google.appengine.ext.ndb.put_multi(entities, **ctx_options)ソース

一連の Model インスタンスを保存します。

パラメータ
  • entities – 一連の Model インスタンス。

  • **ctx_options – コンテキスト オプション。

戻り値

保存されたキーのリスト。

google.appengine.ext.ndb.put_multi_async(entities, **ctx_options)ソース

一連の Model インスタンスを保存します。

パラメータ
  • entities – 一連の Model インスタンス。

  • **ctx_options – コンテキスト オプション。

戻り値

futures のリスト。

google.appengine.ext.ndb.delete_multi(keys, **ctx_options)ソース

一連のキーを削除します。

パラメータ
  • keys – 一連のキー。

  • **ctx_options – コンテキスト オプション。

戻り値

項目がすべて None のリスト、削除されたキーごとに 1 つ。

google.appengine.ext.ndb.delete_multi_async(keys, **ctx_options)ソース

一連のキーを削除します。

パラメータ
  • keys – 一連のキー。

  • **ctx_options – コンテキスト オプション。

戻り値

futures のリスト。

google.appengine.ext.ndb.get_indexes(**ctx_options)ソース

設定済みのインデックスを表すデータ構造を取得します。

パラメータ

**ctx_options – コンテキスト オプション。

戻り値

Index オブジェクトのリスト。

google.appengine.ext.ndb.get_indexes_async(**ctx_options)ソース

設定済みのインデックスを表すデータ構造を取得します。

パラメータ

**ctx_options – コンテキスト オプション。

戻り値

Future。

google.appengine.ext.ndb.make_connection(config=None, default_model=None, _api_version='datastore_v3', _id_resolver=None)ソース

適切なアダプタを持つ新しい Connection オブジェクトを作成します。

必要に応じて、datastore_rpc.Configuration オブジェクトに渡すこともできます。

class google.appengine.ext.ndb.BlobProperty(*args, **kwds)ソース

ベース: google.appengine.ext.ndb.model.Property

値がバイト文字列のプロパティ。圧縮されていることがあります。

class google.appengine.ext.ndb.JsonProperty(*args, **kwds)ソース

ベース: google.appengine.ext.ndb.model.BlobProperty

値が任意の Json でエンコード可能な Python オブジェクトであるプロパティ。

class google.appengine.ext.ndb.StringProperty(*args, **kwds)ソース

ベース: google.appengine.ext.ndb.model.TextProperty

値の長さが制限されたテキスト文字列である、インデックスに登録されたプロパティ。

class google.appengine.ext.ndb.FloatProperty(*args, **kwds)ソース

ベース: google.appengine.ext.ndb.model.Property

値が Python float であるプロパティ。

注: int、long、bool も許可されます。

google.appengine.ext.ndb.BadProjectionError

InvalidPropertyError のエイリアス

class google.appengine.ext.ndb.LocalStructuredProperty(*args, **kwds)ソース

ベース: google.appengine.ext.ndb.model._StructuredGetForDictMixin、google.appengine.ext.ndb.model.BlobProperty

不透明 blob にシリアル化されたサブ構造。

これは Python 側では StructuredProperty のように表示されますが、Cloud Datastore では BlobProperty のように書き込まれています。インデックスに登録されず、サブプロパティに対してクエリを実行できません。一方、ディスク上の表現はより効率的で、gzip を使用して blob データを圧縮する compressed=True を渡すことでさらに効率化されます。

class google.appengine.ext.ndb.TimeProperty(*args, **kwds)ソース

ベース: google.appengine.ext.ndb.model.DateTimeProperty

値が時刻のオブジェクトであるプロパティ。

class google.appengine.ext.ndb.UserProperty(*args, **kwds)ソース

ベース: google.appengine.ext.ndb.model.Property

値が User オブジェクトであるプロパティ。

注: 既存の Cloud Datastore スキーマのみで下位互換性を確保するために存在します。User オブジェクトを直接 Cloud Datastore に保存することはおすすめできませんが、代わりに user.user_id() 値を保存してください。

exception google.appengine.ext.ndb.InvalidPropertyErrorソース

ベース: google.appengine.api.datastore_errors.Error

プロパティが特定の使用に適切でない場合に発生します。

たとえば、プロパティが存在し、クエリの射影または GROUP BY 句で使用されるようインデックスに登録されている必要があります。

exception google.appengine.ext.ndb.KindErrorソース

ベース: google.appengine.api.datastore_errors.BadValueError

kind の実装が見つからない場合に発生します。

Kind が 8 ビットの文字列でない場合にも発生します。

class google.appengine.ext.ndb.ComputedProperty(func, name=None, indexed=None, repeated=None, verbose_name=None)ソース

ベース: google.appengine.ext.ndb.model.GenericProperty

値がユーザー指定の関数によって決定される関数。

計算されたプロパティは直接設定できませんが、必要に応じて関数によって生成されます。Cloud Datastore でフィールドを提供するのに便利です。これらのフィールドは、BlobProperty の長さを並べ替えたり、別のフィールドが空でないかどうか確認するために等価フィルタを使用したりするなど、コードの値を手動で設定せずに、フィルタリングや並べ替えに使用できます。

ComputedProperty は正規プロパティとして宣言できます。関数を最初の引数として渡すか、計算を実行する関数のデコレータとして使用可能です。

例:

>>> class DatastoreFile(Model): ... name = StringProperty() ... name_lower = ComputedProperty(lambda self: self.name.lower()) ... ... data = BlobProperty() ... ... @ComputedProperty ... def size(self): ... return len(self.data) ... ... def _compute_hash(self): ... return hashlib.sha1(self.data).hexdigest() ... hash = ComputedProperty(_compute_hash, name='sha1')
class google.appengine.ext.ndb.KeyProperty(*args, **kwds)ソース

ベース: google.appengine.ext.ndb.model.Property

値がキー オブジェクトである関数。

オプションのキーワード引数: kind=<kind>、このプロパティに割り当てられたキーは常に指定した種類である必要があります。文字列または Model サブクラスにすることもできます。

class google.appengine.ext.ndb.BooleanProperty(*args, **kwds)ソース

ベース: google.appengine.ext.ndb.model.Property

値が Python bool のプロパティ。

class google.appengine.ext.ndb.PickleProperty(*args, **kwds)ソース

ベース: google.appengine.ext.ndb.model.BlobProperty

値がピクル化可能な Python オブジェクトのプロパティ。

class google.appengine.ext.ndb.IntegerProperty(*args, **kwds)ソース

ベース: google.appengine.ext.ndb.model.Property

値が Python int または long(または bool)のプロパティ。

class google.appengine.ext.ndb.Property(*args, **kwds)ソース

ベース: google.appengine.ext.ndb.model.ModelAttribute

Cloud Datastore エンティティの型指定された、永続的な属性を記述するクラス。

Python の「property」組み込みと混同しないでください。

これは単なるベースクラスで、さまざまな型の Property を記述する特定のサブクラスがあります(および動的型指定 Property を表す GenericProperty)。

すべての特殊な Property 属性は、「公開用」と見なされていても名前はアンダースコアで開始しています。StructuredProperty は非アンダースコア属性の名前空間を使用してネストされた Property 名を参照するためです。サブプロパティにクエリを指定するうえで極めて重要です(モジュール docstring を参照)。

Property クラスと事前に定義されたサブクラスでは、構成可能な(積み重ね可能な)検証と変換 API を使用して簡単にサブクラス化できます。このためには、次のとおり用語を定義する必要があります。

  • 「ユーザー値」は、エンティティの標準属性を使用したアプリケーション コードによって設定、アクセスが可能な値です。

  • 「ベース値」は、Cloud Datastore に対してシリアル化が可能な値、または Cloud Datastore からシリアル化を解除することが可能な値です。

ent._values[name] に保存され、_store_value() および _retrieve_value() によってアクセスされる値はユーザー値またはベース値のいずれかになります。ユーザー値を取得するには _get_user_value() を使用します。ベース値を取得するには _get_base_value() を使用します。特に、_get_value() は _get_user_value() を呼び出し、_serialize() は実質的には _get_base_value() を呼び出します。

ユーザー値を保存するには、_store_value() を呼び出します。ベース値を保存するには、_BaseValue() に値をラップしてから _store_value() を呼び出します。

ユーザー値とシリアル化可能な値の間で特定の変換の実装を求める Property サブクラスは、2 つのメソッドとして _to_base_type() および _from_base_type() を実装してください。 super() メソッドは呼び出さないでください。super の呼び出しは _call_to_base_type() および _call_from_base_type() が行います。 構成可能な(積み重ね可能な)API というのは、このようなことを意味します。

API はこれまで以上に高度なユーザー <-> ベース変換によってクラスの「積み重ね」をサポートします。ユーザー -> ベース変換はより高度なものからあまり高度ではないものに変わり、ベース -> ユーザー変換はあまり高度ではないものからより高度なものに変わります。たとえば、BlobProperty、TextProperty、StringProperty の関係をご覧ください。

_to_base_type() と _from_base_type() に加え、_validate() メソッドも構成可能な API です。

検証 API は、「緩い」ユーザー値と「厳格な」ユーザー値を区別します。緩い値のセットは、厳格な値のセットのスーパーセットです。_validate() メソッドは緩い値を受け取り、必要に応じて厳格な値に変換します。つまり、プロパティ値を設定する際は、緩い値が承認されますが、プロパティ値を取得する際には、厳格な値のみが返されます。変換が不要な場合、_validate() は None を返します。承認された緩い値のセットの範囲外に引数がある場合、_validate() により、好ましくは、TypeError か datastore_errors.BadValueError である例外が発生します。

例 / ボイラー プレート:

def _validate(self, value):

‘Lax user value to strict user value.’ if not isinstance(value, <top type>):

raise TypeError(…) # Or datastore_errors.BadValueError(…).

def _to_base_type(self, value):

‘(Strict) user value to base value.’ if isinstance(value, <user type>):

return <base type>(value)

def _from_base_type(self, value):

‘base value to (strict) user value.’ if not isinstance(value, <base type>):

return <user type>(value)

_validate()、_to_base_type() および _from_base_type() は、処理する必要がありません。

  • None: None では呼び出されません(また、None を返す場合、値は変換の必要がないことを意味します)。

  • 繰り返し値: 繰り返し値の各リストアイテムについては、インフラストラクチャ(_get_user_value() および _get_base_value())が _from_base_type() または _to_base_type() を呼び出す処理を行います。

  • _BaseValue() で値をラップする: ラッピングとアンラッピングは構成可能な API を呼び出すインフラストラクチャによって処理が行われます。

  • 比較: 比較演算でオペランドの _to_base_type() が呼び出されます。

  • ユーザー値とベース値の区別: インフラストラクチャは、_from_base_type() がアンラップされたベース値で呼び出され、_to_base_type() がユーザー値で呼び出されることを保証します。

  • 元の値を返す: いずれかが None を返す場合、元の値は保持されます(None と等しくない異なる値を返す場合は、異なる値に置き換えます)。

IN(value)ソース

「in」比較演算子の比較演算子。

Python「in」演算子は希望する方法でオーバーロードできないため、メソッドを定義します。例:

Employee.query(Employee.rank.IN([4, 5, 6]))

メソッドが ._IN() を呼び出しましたが、通常は .IN(); として呼び出すことに注意してください。._IN() は IN と呼ばれるプロパティを持つモデルと一緒に StructuredProperty を持つ場合に提供されます。

class google.appengine.ext.ndb.DateProperty(*args, **kwds)ソース

ベース: google.appengine.ext.ndb.model.DateTimeProperty

値がデータ オブジェクトであるプロパティ。

class google.appengine.ext.ndb.TextProperty(*args, **kwds)ソース

ベース: google.appengine.ext.ndb.model.BlobProperty

値が無制限の長さのテキスト文字列であるインデックスに登録されていないプロパティ

class google.appengine.ext.ndb.DateTimeProperty(*args, **kwds)ソース

ベース: google.appengine.ext.ndb.model.Property

値が datetime オブジェクトであるプロパティ。

注: Django とは異なり、auto_now_add はエンティティを作成する前に値を設定することによってオーバーライドされます。以前の db とは異なり、auto_now はデフォルト値を提供しません。また、以前の db とは異なり、エンティティが作成されると、プロパティ値は作成された値と一致するよう更新されます。最後に、これはインプロセス キャッシュの値も更新し auto_now_add はトランザクションの再試行に異常な影響を与える可能性があるので注意してください(auto_now_add が設定されたプロパティの再試行は、最初の試行で設定された値を再利用します)。

class google.appengine.ext.ndb.GenericProperty(*args, **kwds)ソース

ベース: google.appengine.ext.ndb.model.Property

値が(ほとんど)任意の基本タイプであるプロパティ。

これは主に Expando とオーファン(Cloud Datastore に存在するが Model サブクラスで表されない値)に使用されますが、動的に型指定された値を持つプロパティにも明示的に使用されます。

これは str 値(Unicode は対象外)にのみ有効な compressed=True をサポートし、indexed=False を示します。

exception google.appengine.ext.ndb.UnprojectedPropertyErrorソース

ベース: google.appengine.api.datastore_errors.Error

射影に存在しないプロパティ値を取得するときに発生します。

class google.appengine.ext.ndb.StructuredProperty(*args, **kwds)ソース

ベース: google.appengine.ext.ndb.model._StructuredGetForDictMixin

値自体がエンティティであるプロパティ。

サブエンティティの値はインデックスに登録され、クエリが実行されます。

詳細については、モジュール docstring をご覧ください。

IN(value)ソース
class google.appengine.ext.ndb.GeoPtProperty(*args, **kwds)ソース

ベース: google.appengine.ext.ndb.model.Property

値が GeoPt であるプロパティ。

exception google.appengine.ext.ndb.ComputedPropertyErrorソース

ベース: google.appengine.ext.ndb.model.ReadonlyPropertyError

計算されたプロパティに値を設定しようとしたり、削除しようとしたりするときに発生します。

class google.appengine.ext.ndb.BlobKeyProperty(*args, **kwds)ソース

ベース: google.appengine.ext.ndb.model.Property

値が BlobKey オブジェクトであるプロパティ。

exception google.appengine.ext.ndb.ReadonlyPropertyErrorソース

ベース: google.appengine.api.datastore_errors.Error

読み取り専用のプロパティ値を設定しようとするときに発生します。

class google.appengine.ext.ndb.Query(*args, **kwds)ソース

ベース: オブジェクト

Query オブジェクト。

通常、Model.query() を呼び出すことによって構築されます。

例については、docstring モジュールを参照してください。

クエリのすべてのオペレーションが _MultiQuery インスタンスでサポートされるわけではないことに注意してください。後者は、演算子 !=、IN または OR のいずれかが使用されている場合に生成されます。

analyze()ソース

クエリで必要なパラメータを指定したリストを返します。

ancestor

祖先のアクセサー(Key または None)。

app

アプリのアクセサー(文字列または None)。

bind(*args, **kwds)ソース

パラメータ値をバインドします。新しい Query オブジェクトを返します。

count(*args, **kwds)ソース

クエリ結果の数を制限値までカウントします。

これは len(q.fetch(limit)) と同じ結果をより効率的に返します。

クエリによって実行される作業量を制限するには、最大値を渡す必要があります。

パラメータ
  • limit – カウントする結果の最大数。

  • ** q_options - すべてのクエリ オプションのキーワード引数がサポートされています。

戻り値:

count_async(*args, **kwds)ソース

クエリ結果の数を制限値までカウントします。

これは、Query.count() の非同期バージョンです。

default_options

default_options のアクセサー(QueryOptions インスタンスまたは None)。

fetch(*args, **kwds)ソース

制限値まで、クエリ結果のリストをフェッチします。

パラメータ
  • limit - 検索する結果の最大数。

  • ** q_options - すべてのクエリ オプションのキーワード引数がサポートされています。

戻り値

結果のリスト。

fetch_async(*args, **kwds)ソース

制限値まで、クエリ結果のリストをフェッチします。

これは、Query.fetch() の非同期バージョンです。

fetch_page(*args, **kwds)ソース

結果のページをフェッチします。

ユーザー インターフェースのページングで使用するための特別なメソッドです。

パラメータ

page_size – 要求されたページサイズ。返される結果の最大サイズ。

さらに、QueryOptions クラスでサポートされているキーワード引数はすべてサポートされています。特に次ページをフェッチするには、ある呼び出しで返されたカーソルを、start_cursor=<cursor> を使用して次の呼び出しに渡します。一般的には、<cursor>.to_websafe_string() を使用してカーソルをクライアントに渡し、Cursor.from_websafe_string(<string>) を使用して後続のリクエストでそのカーソルを再構築します。

戻り値

タプル (results, cursor, more) であり、results はクエリ結果のリスト、cursor は最後に返された結果の直後を示すカーソル、more はそれ以降の結果がある(可能性がある)かどうかを示すブール値です。

fetch_page_async(*args, **kwds)ソース

結果のページをフェッチします。

これは、Query.fetch_page() の非同期バージョンです。

filter(*args)ソース

追加のフィルタを適用した新しいクエリを返します。

filters

フィルタのアクセサー(Node または None)。

get(**q_options)ソース

最初のクエリ結果(ある場合)を取得します。

これは、q.fetch(1) の呼び出しに似ており、結果のリストがある場合はその最初のアイテムを返します。そうでない場合は None を返します。

パラメータ

** q_options - すべてのクエリ オプションのキーワード引数がサポートされています。

戻り値

1 つの結果、結果がない場合は None。

get_async(**q_options)ソース

最初のクエリ結果(ある場合)を取得します。

これは、Query.get() の非同期バージョンです。

group_by

group by プロパティのアクセサー(タプル インスタンスまたは None)。

is_distinct

結果に固有のプロパティ値のセットが確実に含まれている場合は True。

これは、group_by のすべてのプロパティが射影にある場合に発生します。

iter(**q_options)ソース

クエリに対してイテレータを構築します。

パラメータ

** q_options - すべてのクエリ オプションのキーワード引数がサポートされています。

戻り値

QueryIterator オブジェクト。

kind

kind のアクセサー(文字列または None)。

map(*args, **kwds)ソース

クエリ結果に対してコールバック関数やタスクレットをマッピングします。

パラメータ
  • callback - 各結果に適用する関数またはタスクレット。下記を参照してください。

  • merge_future - オプションの Future サブクラス。下記を参照してください。

  • ** q_options - すべてのクエリ オプションのキーワード引数がサポートされています。

コールバック署名: コールバックは通常、引数としてエンティティを使って呼び出されます。ただし、keys_only=True が指定されている場合、Key を使って呼び出されます。また、pass_batch_into_callback が True の場合、現在のバッチ、バッチ内のインデックス、およびそのインデックスのエンティティまたは Key の 3 つの引数を使用して呼び出されます。コールバックは、どんなものでも返します。コールバックが None の場合、渡されたエンティティまたはキーを返すだけの簡単なコールバックが想定されます(produce_cursors は無視されます)。

merge future(オプション): merge_future は高度な引数で、コールバックの結果を map() の戻り値全体に対して結合する方法をオーバーライドするために使用できます。デフォルトでは、コールバック戻り値のリストが生成されます。小数の専用選択肢の 1 つを置換することで、別の設定にすることができます。デフォルトの実装および merge_future がデフォルトを実装する必要があるプロトコルの記述については、tasklets.MultiFuture をご覧ください。同じモジュールからの選択肢としては、QueueFuture、SerialQueueFuture、ReducingFuture などがあります。

戻り値

クエリが完了に向かい、すべてのコールバックが返されたときに返されると、map() はすべてのコールバックの結果のリストを返します(ただし、上記の「merge future(オプション)」をご覧ください)。

map_async(*args, **kwds)ソース

クエリ結果に対してコールバック関数やタスクレットをマッピングします。

これは、Query.map() の非同期バージョンです。

namespace

名前空間のアクセサー(文字列または None)。

order(*args)ソース

追加の並べ替え順序を適用して、新しいクエリを返します。

orders

フィルタのアクセサー(datastore_query.Order または None)。

projection

projected プロパティのアクセサー(タプル インスタンスまたは None)。

run_to_queue(*args, **kwds)ソース

このクエリを実行して、エンティティを指定のキューに配置します。

class google.appengine.ext.ndb.QueryOptionsソース

ベース: google.appengine.ext.ndb.context.ContextOptions, google.appengine.datastore.datastore_query.QueryOptions

コンテキスト オプションとクエリ オプションの両方をサポートします(特に use_cache)。

class google.appengine.ext.ndb.Cursor(*args, **kwds)ソース

ベース: google.appengine.datastore.datastore_query._BaseComponent

クエリ内の相対位置を表す不変クラス。

カーソルで示される位置は、結果が指定されたクエリから削除された場合でも、クエリの結果に相対的です。通常は、バッチによって返された最後の結果の直後に配置されます。

カーソルは、それを生成したものと同一の署名を持つクエリ、またはその並べ替え順を逆にしたクエリでのみ使用してください。

advance(offset, query, conn)ソース

指定されたオフセットでカーソルを進めます。

パラメータ
  • offset - 現在のクエリを進める量。

  • query - このカーソルの作成元となったクエリと同一のクエリ。

  • conn – 使用する datastore_rpc.Connection。

戻り値

指定されたクエリを使用してオフセットによって進められる新しいカーソル。

static from_bytes(cursor)ソース

そのバイト文字列がシリアル化された形式の場合、カーソルを取得します。

シリアル化されたカーソルの形式は、後方互換性のない方法で変更される可能性があります。この場合、カーソルは新しい Query リクエストから再生成する必要があります。

パラメータ

cursor - .to_bytes によって返されるシリアル化されたカーソル。

戻り値

カーソル。

発生
  • datastore_errors.BadValueError(カーソル引数が a を表していない場合)

  • シリアル化されたカーソル。

static from_websafe_string(cursor)ソース

そのウェブセーフなシリアル化された形式の場合、カーソルを取得します。

シリアル化されたカーソルの形式は、後方互換性のない方法で変更される可能性があります。この場合、カーソルは新しい Query リクエストから再生成する必要があります。

パラメータ

cursor - .to_websafe_string によって返されるシリアル化されたカーソル。

戻り値

カーソル。

発生
  • datastore_errors.BadValueError(カーソル引数が文字列でない場合)

  • type of は、シリアル化されたカーソルを表しません。

reversed()ソース

サポート終了しています。カーソル上で reversed() を呼び出す必要はなくなりました。

クエリによって返されたカーソルは、並べ替え順序が逆になっているクエリでも使用できます。このメソッドは、元のカーソルのコピーを返します。

to_bytes()ソース

カーソルをバイト文字列としてシリアル化します。

to_websafe_string()ソース

カーソルをウェブセーフな文字列としてシリアル化します。

戻り値

base64 でエンコードされシリアル化されたカーソル。

urlsafe()ソース

カーソルをウェブセーフな文字列としてシリアル化します。

戻り値

base64 でエンコードされシリアル化されたカーソル。

class google.appengine.ext.ndb.QueryIterator(*args, **kwds)ソース

ベース: オブジェクト

このイテレータは、同期発信者と非同期発信者の両方で動作します。

同期発信者の場合は、次を使用します。

Account.query() 内のエンティティの場合:

<use entity>

非同期発信者はこのイディオムを使用します。

it = iter(Account.query()) while (yield it.has_next_async()):

entity = it.next() <use entity>

iter(q) の代わりに q.iter([options]) を使うこともできます。keys_only や produce_cursors などのクエリオ プションを渡すことができます。

keys_only が設定されている場合、it.next() はエンティティの代わりにキーを返します。

produce_cursors が設定されている場合、it.cursor_before() および it.cursor_after() メソッドは、it.next() によって返されたアイテムの直前および直後のクエリ位置に対応する Cursor オブジェクトを返します。it.next() が初めて呼び出される前に、両方のメソッドにより例外が発生します。ループを使い果たすと、最後のアイテムが返された後にカーソルが返されます。it.has_next() を呼び出しても、カーソルには影響しません。カーソルを移動する前に it.next() を呼び出す必要があります。カーソルを要求する際に Cloud Datastore ラウンドトリップが必要になる場合もあります(ただし、バッチ境界に対応するカーソルを要求する場合は必要ありません)。produce_cursors が設定されていない場合、両方のメソッドにより常に例外が発生します。

複数のクエリ(つまり、IN、!= または OR 演算子を使用したクエリ)のメモリ内マージを必要とするクエリは、クエリ オプションをサポートしない点に注意してください。

cursor_after()ソース

現在のアイテムの後ろにカーソルを返します。

これが機能するには、produce_cursors = True を指定した QueryOptions オブジェクトを渡す必要があります。

カーソル、または現在のアイテムが存在しない場合、BadArgumentError を発生させます。next() が返される前に、カーソルは存在しません。ループを使い果たすと、最後のアイテムの後にカーソルが返されます。

cursor_before()ソース

現在のアイテムの前にカーソルを返します。

これが機能するには、produce_cursors = True を指定した QueryOptions オブジェクトを渡す必要があります。

カーソル、または現在のアイテムが存在しない場合、BadArgumentError を発生させます。next() が返される前に、カーソルは存在しません。ループを使い果たすと、最後のアイテムの後にカーソルが返されます。

has_next()ソース

次のアイテムが利用可能かどうかを返します。

使用パターンについては、docstring モジュールをご覧ください。

has_next_async(*args, **kwds)ソース

Future を返します。その結果は、次のアイテムが利用可能かどうかを示します。

使用パターンについては、docstring モジュールをご覧ください。

index_list()ソース

このクエリに使用されるインデックスのリストを返します。

これは、インデックス表現が get_indexes() によって返されるものと同じインデックス表現のリストを返します。

最初の結果の前に、情報は利用できず、None が返されます。これは空のリストと同じではありません。空のリストは、クエリを実行するためにインデックスが使用されなかったことを意味します(dev_appserver では、空のリストは組み込みインデックスのみが使用されたことも意味する場合があります。メタデータ クエリもここで空のリストを返します)。

適切な使用法は次のとおりです。

q = <modelclass>.query(<filters>) i = q.iter() try:

i.next()

except Stopiteration:

PASS

indexes = i.index_list() assert isinstance(indexes, list)

注: - produce_cursors=False を強制すると常に None が返されます。 - マルチクエリでは常に None が返されます。

next()ソース

イテレータ プロトコル: 次のアイテムを取得するか、StopIteration を呼び出します。

probably_has_next()ソース

次のアイテムが(おそらく)利用可能かどうかを返します。

これは has_next() とまったく同じではありません。

produce_cursors が設定されている場合、いくつかのショートカットが可能なためです。しかし、いくつかの場合(たとえば、クエリに post_filter がある場合)、偽陽性を取得できます(True を返しますが、next() は StopIteration を発生させます)。偽陰性はありません。

class google.appengine.ext.ndb.RepeatedStructuredPropertyPredicate(match_keys, pb, key_prefix)ソース

ベース: google.appengine.datastore.datastore_query.FilterPredicate

google.appengine.ext.ndb.AND

ConjunctionNode のエイリアス

google.appengine.ext.ndb.OR

DisjunctionNode のエイリアス

class google.appengine.ext.ndb.ConjunctionNodeソース

ベース: google.appengine.ext.ndb.query.Node

2 つ以上のノード上のブール AND 演算子を表すツリーノード。

resolve(bindings, used)ソース
class google.appengine.ext.ndb.DisjunctionNodeソース

ベース: google.appengine.ext.ndb.query.Node

2 つ以上のノード上のブール OR 演算子を表すツリーノード。

resolve(bindings, used)ソース
class google.appengine.ext.ndb.FilterNodeソース

ベース: google.appengine.ext.ndb.query.Node

1 つのフィルタ式のツリーノード。

class google.appengine.ext.ndb.PostFilterNodeソース

ベース: google.appengine.ext.ndb.query.Node

メモリ内フィルタリング オペレーションを表すツリーノード。

これは、構造化された値のクエリなど、データストアで実行できないフィルタを表すのに使用されます。

class google.appengine.ext.ndb.FalseNodeソース

ベース: google.appengine.ext.ndb.query.Node

常に失敗するフィルタのツリーノード。

class google.appengine.ext.ndb.Nodeソース

ベース: オブジェクト

フィルタ式ツリーノードの基本クラス。

ツリーノードは、不変ではない Parameter インスタンスを含んでいる場合がありますが、不変であると見なされます。特に、2 つの同一のツリーは、異なるコンテキストで同じ Node オブジェクトで表すことができます。

resolve(bindings, used)ソース

Parameter を選択した値に置き換えたノードを返します。

パラメータ
  • bindings - 整数と文字列を値にマッピングする dict。

  • used - バインディングの使用が記録された dict。

戻り値

Node インスタンス。

class google.appengine.ext.ndb.ParameterNodeソース

ベース: google.appengine.ext.ndb.query.Node

パラメータ化されたフィルタのツリーノード。

resolve(bindings, used)ソース
class google.appengine.ext.ndb.ParameterizedThingソース

ベース: オブジェクト

Parameter および ParameterizedFunction の基本クラス。

これは単に isinstance() チェックのために存在します。

class google.appengine.ext.ndb.Parameter(key)ソース

ベース: google.appengine.ext.ndb.query.ParameterizedThing

GQL クエリのバインドされた変数を表します。

Parameter(1) は、GQL クエリで「:1」というラベルが付けられたスロットに対応します。Parameter(‘xyz’) は、「:xyz」というラベルの付いたスロットに対応します。

値は、.set(value) を呼び出すことによって個別に設定(バインド)されなければなりません。

key

キーを取得します。

resolve(bindings, used)ソース
class google.appengine.ext.ndb.ParameterizedFunction(func, values)ソース

ベース: google.appengine.ext.ndb.query.ParameterizedThing

パラメータ化された引数を持つ GQL 関数を表します。

たとえば、ParameterizedFunction(‘key’, [Parameter(1)]) は GQL 構文 KEY(:1) を表します。

func
is_parameterized()ソース
resolve(bindings, used)ソース
google.appengine.ext.ndb.gql(query_string, *args, **kwds)ソース

GQL クエリ文字列を解析します。

パラメータ
  • query_string – 完全な GQL クエリ。たとえば「SELECT * FROM Kind WHERE prop = 1」。

  • **kwds (*args,) –

    存在する場合は、bind() を呼び出すために使用されます。

戻り値

query_class のインスタンス。

class google.appengine.ext.ndb.Context(conn=None, auto_batcher_class=google.appengine.ext.ndb.context.AutoBatcher, config=None, parent_context=None)ソース

ベース: オブジェクト

allocate_ids(*args, **kwds)ソース
call_on_commit(callback)ソース

トランザクションの commit が成功するとコールバックを呼び出します。

トランザクションでない場合は、コールバックはすぐに呼び出されます。

トランザクションでは、複数のコールバックが登録され、トランザクションが commit されると、登録された順序で呼び出されます。トランザクションが失敗した場合、コールバックは呼び出されません。

コールバックが例外を発生させた場合は、通常と同じく上位階層へ伝達されます。つまり、コールバックがすぐに呼び出された場合、それが発生させた例外もすぐに上位階層へ伝達されます。commit するまで呼び出しが延期された場合、残りのコールバックはスキップされ、例外は transaction() の呼び出しによって上位階層へ伝達されます(ただし、その時点でトランザクションはすでに commit されています)。

clear_cache()ソース

メモリ内キャッシュをクリアします。

注: これは memcache には影響しません。

static default_cache_policy(key)ソース

デフォルトのキャッシュ ポリシー。

これは、Model クラスの _use_cache に従います。

パラメータ

key – Key インスタンス。

戻り値

ブール値または None。

static default_datastore_policy(key)ソース

デフォルトのデータストア ポリシー。

これは、Model クラスの _use_datastore に従います。

パラメータ

key – Key インスタンス。

戻り値

ブール値または None。

static default_memcache_policy(key)ソース

デフォルトの memcache ポリシー。

これは、Model クラスの _use_memcache に従います。

パラメータ

key – Key インスタンス。

戻り値

ブール値または None。

static default_memcache_timeout_policy(key)ソース

デフォルトの memcache タイムアウト ポリシー。

これは、Model クラスの _memcache_timeout に従います。

パラメータ

key – Key インスタンス。

戻り値

使用する memcache タイムアウト(整数)、または None。

delete(*args, **kwds)ソース
flush(*args, **kwds)ソース
get(*args, **kwds)ソース

エンティティ キーを指定して Model インスタンスを返します。

指定されたキーのキャッシュ ポリシーが有効な場合、コンテキスト キャッシュが使用されます。

パラメータ
  • key – Key インスタンス。

  • **ctx_options – コンテキスト オプション。

戻り値

キーがデータストアに存在する場合は Model インスタンス。そうでない場合は None。

get_cache_policy()ソース

現在のコンテキストのキャッシュ ポリシー関数を返します。

戻り値

引数として Key インスタンスを受け取り、キャッシュする必要があるかどうかを示すブール値を返す関数。None が返される場合があります。

get_datastore_policy()ソース

現在のコンテキストのデータストア ポリシー関数を返します。

戻り値

引数として Key インスタンスを受け取り、データストアを使用するかどうかを示すブール値を返します。None が返される場合があります。

get_indexes(*args, **kwds)ソース
get_memcache_policy()ソース

現在の memcache ポリシー関数を返します。

戻り値

引数として Key インスタンスを受け取り、キャッシュする必要があるかどうかを示すブール値を返す関数。None が返される場合があります。

get_memcache_timeout_policy()ソース

memcache タイムアウト(有効期限)の現在のポリシー関数を返します。

in_transaction()ソース

トランザクションが現在有効になっているかを返します。

iter_query(*args, **kwds)ソース
map_query(*args, **kwds)ソース
memcache_add(key, value, time=0, namespace=None, deadline=None)ソース
memcache_cas(key, value, time=0, namespace=None, deadline=None)ソース
memcache_decr(key, delta=1, initial_value=None, namespace=None, deadline=None)ソース
memcache_delete(key, seconds=0, namespace=None, deadline=None)ソース
memcache_get(key, for_cas=False, namespace=None, use_cache=False, deadline=None)ソース

memcache.get() または .get_multi() の自動バッチラッパー。

パラメータ
  • key - 設定するキー。これは文字列でなければなりません。接頭辞は適用されません。

  • for_cas - True の場合、CAS ID をリクエストして Context に保存します。

  • namespace – オプションの名前空間。

  • deadline – オプションの RPC 期限。

戻り値

Future (!)。戻り値は memcache から取得した値、または None。

memcache_gets(key, namespace=None, use_cache=False, deadline=None)ソース
memcache_incr(key, delta=1, initial_value=None, namespace=None, deadline=None)ソース
memcache_replace(key, value, time=0, namespace=None, deadline=None)ソース
memcache_set(key, value, time=0, namespace=None, use_cache=False, deadline=None)ソース
put(*args, **kwds)ソース
set_cache_policy(func)ソース

コンテキスト キャッシュ ポリシー関数を設定します。

パラメータ

func - 引数として Key インスタンスを受け取り、キャッシュする必要があるかどうかを示すブール値を返す関数。None が返される場合があります。

set_datastore_policy(func)ソース

コンテキスト データストア ポリシー関数を設定します。

パラメータ

func - 引数として Key インスタンスを受け取り、データストアを使用するかどうかを示すブール値を返します。None が返される場合があります。

set_memcache_policy(func)ソース

memcache ポリシー関数を設定します。

パラメータ

func - 引数として Key インスタンスを受け取り、キャッシュする必要があるかどうかを示すブール値を返す関数。None が返される場合があります。

set_memcache_timeout_policy(func)ソース

memcache タイムアウト(有効期限)のポリシー関数を設定します。

パラメータ

func - 引数として Key インスタンスを受け取り、必要な memchache タイムアウトを示す整数を返す関数。None が返される場合があります。

関数が 0 を返す場合は、デフォルトのタイムアウトを意味します。

transaction(*args, **kwds)ソース
urlfetch(*args, **kwds)ソース
class google.appengine.ext.ndb.ContextOptionsソース

ベース: google.appengine.datastore.datastore_rpc.Configuration

get/put/delete と一緒に渡すことができる構成オプション。

max_memcache_items

構成オプションの記述子。

このクラスは、BaseConfiguration から継承されるクラスに対して構成オプションを作成するために使用されます。このクラスで修飾されたバリデータ関数は読み取り専用の記述子に変換され、BaseConfiguration は、その構成オプションのコンストラクタとマージロジックを実装します。バリデータ関数は、None 以外の 1 つの値を受け取り、検証して例外をスローするか、その値(または同等の値)を返します。バリデータは、構築時に一度だけ呼び出されますが、構成オプションの None 以外の値にコンストラクタのキーワード引数が指定されている場合にのみ呼び出されます。

memcache_deadline

構成オプションの記述子。

このクラスは、BaseConfiguration から継承されるクラスに対して構成オプションを作成するために使用されます。このクラスで修飾されたバリデータ関数は読み取り専用の記述子に変換され、BaseConfiguration は、その構成オプションのコンストラクタとマージロジックを実装します。バリデータ関数は、None 以外の 1 つの値を受け取り、検証して例外をスローするか、その値(または同等の値)を返します。バリデータは、構築時に一度だけ呼び出されますが、構成オプションの None 以外の値にコンストラクタのキーワード引数が指定されている場合にのみ呼び出されます。

memcache_timeout

構成オプションの記述子。

このクラスは、BaseConfiguration から継承されるクラスに対して構成オプションを作成するために使用されます。このクラスで修飾されたバリデータ関数は読み取り専用の記述子に変換され、BaseConfiguration は、その構成オプションのコンストラクタとマージロジックを実装します。バリデータ関数は、None 以外の 1 つの値を受け取り、検証して例外をスローするか、その値(または同等の値)を返します。バリデータは、構築時に一度だけ呼び出されますが、構成オプションの None 以外の値にコンストラクタのキーワード引数が指定されている場合にのみ呼び出されます。

use_cache

構成オプションの記述子。

このクラスは、BaseConfiguration から継承されるクラスに対して構成オプションを作成するために使用されます。このクラスで修飾されたバリデータ関数は読み取り専用の記述子に変換され、BaseConfiguration は、その構成オプションのコンストラクタとマージロジックを実装します。バリデータ関数は、None 以外の 1 つの値を受け取り、検証して例外をスローするか、その値(または同等の値)を返します。バリデータは、構築時に一度だけ呼び出されますが、構成オプションの None 以外の値にコンストラクタのキーワード引数が指定されている場合にのみ呼び出されます。

use_datastore

構成オプションの記述子。

このクラスは、BaseConfiguration から継承されるクラスに対して構成オプションを作成するために使用されます。このクラスで修飾されたバリデータ関数は読み取り専用の記述子に変換され、BaseConfiguration は、その構成オプションのコンストラクタとマージロジックを実装します。バリデータ関数は、None 以外の 1 つの値を受け取り、検証して例外をスローするか、その値(または同等の値)を返します。バリデータは、構築時に一度だけ呼び出されますが、構成オプションの None 以外の値にコンストラクタのキーワード引数が指定されている場合にのみ呼び出されます。

use_memcache

構成オプションの記述子。

このクラスは、BaseConfiguration から継承されるクラスに対して構成オプションを作成するために使用されます。このクラスで修飾されたバリデータ関数は読み取り専用の記述子に変換され、BaseConfiguration は、その構成オプションのコンストラクタとマージロジックを実装します。バリデータ関数は、None 以外の 1 つの値を受け取り、検証して例外をスローするか、その値(または同等の値)を返します。バリデータは、構築時に一度だけ呼び出されますが、構成オプションの None 以外の値にコンストラクタのキーワード引数が指定されている場合にのみ呼び出されます。

class google.appengine.ext.ndb.TransactionOptionsソース

ベース: google.appengine.ext.ndb.context.ContextOptions, google.appengine.datastore.datastore_rpc.TransactionOptions

コンテキスト オプションとトランザクション オプションの両方をサポートします。

class google.appengine.ext.ndb.AutoBatcher(todo_tasklet, limit)ソース

ベース: オブジェクト

同じ rpc オプションを共有する場合、複数の非同期呼び出しをバッチ処理します。

以下に、このクラスが何をするかを説明する例を示します。

key.get_async(options) API 呼び出しの存続期間: *) キーがシングルトン Context インスタンスを取得し、Context.get を呼び出します。 *) Context.get は Context._get_batcher.add(key, options) を呼び出します。これは、

key.get_async の戻り値として future の "fut" を返します。この時点で、key.get_async が返されます。

*) "limit" の数を超える _get_batcher.add() が呼び出された場合、

_get_batcher は、これまでに読み取ったキーのリストを使用して self._todo_tasklet、Context._get_tasklet を呼び出します。

*) Context._get_tasklet は MultiRPC を起動し、その完了を待ちます。 *) MultiRPC が完了すると、Context._get_tasklet は結果を

key.get_async からそれぞれの「fut」に渡します。

*) add() が “limit” の数を超えて呼び出される前にユーザーが "fut".get_resultblob() を呼び出すと、

"fut".get_result() は eventloop.run1() を繰り返し呼び出します。

*) 即時コールバックを処理した後、eventloop はアイドラを実行します。

AutoBatcher._on_idle はアイドラです。

*) _on_idle は、バッチが上限に達する前に「todo_tasklet」を実行します。

そのため、エンジンは todo_tasklet です。これは、引数をバッチに結合し、結果をそれぞれの future に戻すプロキシ タスクレットです。このクラスは主に、適切な引数を適切なタイミングで todo_tasklet を呼び出すヘルパーです。

action()ソース
add(arg, options=None)ソース

arg を追加して future を返します。

パラメータ
  • arg – _todo_tasklet の 1 つの引数。

  • options - rpc オプション。

戻り値

future のインスタンス、バッチ処理なしの

_todo_tasklet の実行結果を表します。

add_once(arg, options=None)ソース
flush(*args, **kwds)ソース
run_queue(options, todo)ソース

実際に _todo_tasklet を実行します。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Python の App Engine スタンダード環境