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

概要

キー範囲の表現と分割。

内容

exception google.appengine.ext.key_range.Errorソース

ベース: exceptions. Exception

このモジュールの例外の基本クラスです。

class google.appengine.ext.key_range.KeyRange(key_start=None, key_end=None, direction=None, include_start=True, include_end=True, namespace=None, _app=None)ソース

ベース: オブジェクト

データストア内のキーの範囲を表します。

KeyRange オブジェクトはキー範囲

(key_start, include_start, key_end, include_end)

およびスキャン方向(KeyRange.DESC または KeyRange.ASC)を表します。

ASC = 'ASC'
DESC = 'DESC'
advance(key)ソース

指定されたキーの直後の範囲の開始を更新します。

パラメータ

key – db.Key または ndb.Key.

static bisect_string_range(start, end)ソース

範囲のほぼ中間にある文字列を返します。

(start, end) は文字列範囲として扱われ、通常の辞書編集文字列の順序では start <= end と見なされます。出力キー mid は、start <= mid <= end を確実に満たします。

このメソッドは、開始と終了の最初の文字を比較することによって処理されます。文字が等しい場合は、mid 文字列に追加されます。文字が異なる最初の場所で、差異文字が平均化され、この平均が mid 文字列に追加されます。平均化により切り捨てが発生した場合、文字が mid 文字列に追加され、切り捨てを補います。このステップは、2 つの文字の平均が start 文字列の文字と等しい場合の正確さのために必要です。

このメソッドの前提としてほとんどのキーは ascii であり、分割が有効になると ascii 範囲内で分割を実行しようとします。

パラメータ
  • start - 文字列。

  • end - start <= end のような文字列。

戻り値

start <= mid <= end のような文字列 mid。

classmethod compute_split_points(kind, count)ソース

ある種類の分割点である KeyRange の集合を計算します。

パラメータ
  • kind - 分割するエンティティ kind を備えた文字列。

  • count - 生成するオーバーラップしない KeyRange の数。

戻り値

オーバーラップしない KeyRange オブジェクトのリスト。最大で「count」+ 1 個の KeyRange オブジェクトが返されます。少なくとも 1 つのオブジェクトが返されます。

filter_datastore_query(query, filters=None)ソース

クエリフィルタを追加して、このキー範囲に制限します。

パラメータ
  • query – datastore.Query インスタンス。

  • filters - クエリに適用するフィルタのオプションのリスト。各フィルタはタプル (<property_name_as_str>, <query_operation_as_str>, <value>) です。ユーザー フィルタが最初に適用されます。

戻り値

入力クエリはこのキー範囲に制限されます。

filter_ndb_query(query, filters=None)ソース

クエリフィルタを追加して、このキー範囲に制限します。

パラメータ
  • query – ndb.Query インスタンス。

  • filters - クエリに適用するフィルタのオプションのリスト。各フィルタはタプル (<property_name_as_str>, <query_operation_as_str>, <value>) です。ユーザー フィルタが最初に適用されます。

戻り値

入力クエリはこのキー範囲に制限されます。

filter_query(query, filters=None)ソース

クエリフィルタを追加して、このキー範囲に制限します。

パラメータ
  • query – db.Query または ndb.Query インスタンス。

  • filters - クエリに適用するフィルタのオプションのリスト。各フィルタはタプル (<property_name_as_str>, <query_operation_as_str>, <value>) です。ユーザー フィルタが最初に適用されます。

戻り値

入力クエリはこのキー範囲に制限されます。

static from_json(json_str)ソース

その json 表現から KeyRange のシリアル化解除を行います。

パラメータ

json_str - key_range_to_json によって作成された json 表現を持つ文字列。

戻り値

シリアル化解除が行われた KeyRange インスタンス。

static guess_end_key(kind, key_start, probe_count=30, split_rate=5)ソース

プローブクエリのバイナリ検索でキー範囲の終わりを推測します。

「key_start」パラメータにキー階層がある場合、この関数は類似した階層のキーのキー範囲のみを決定します。つまり、キーが以下の形式の場合:

kind=Foo, name=bar/kind=Stuff, name=meep

この範囲のみが探知されます。

kind=Foo, name=*/kind=Stuff, name=*

つまり、別の親エンティティ kind の子である kind「Stuff」の他のエンティティはスキップされます。

kind=Other, name=cookie/kind=Stuff, name=meep

パラメータ
  • key_start - 検索範囲の開始キー。ほとんどの場合、これは id = 0 または name = '' でなければなりません。指定可能なものは db.Key または ndb.Key です。

  • kind - エンティティ kind の文字列名。

  • probe_count - オプションで、実行するプローブクエリの数。

  • split_rate - フル キースペースから途中で範囲を分割するために使用する指数関数レート。より狭い範囲では、このレートは高めでなければならないので、より多くのキー空間が最初の降下でスキップされます。

戻り値

db.Key は、この Kind の最高位のキーと同じかそれ以上です。「key_start」とこの返された Key(両端を含む)の間でクエリを実行すると、この Kind のすべてのエンティティが含まれます。

注: ndb.Key インスタンスは引数として受け入れられても、戻り値は常に db.Key インスタンスです。

make_ascending_datastore_query(kind, keys_only=False, filters=None)ソース

スキャン方向を設定せずに、このキー範囲のクエリを構築します。

パラメータ
  • kind - 文字列。

  • keys_only - ブール値、デフォルトは False、クエリで keys_only を使用しますか?

  • filters - クエリに適用するフィルタのオプションのリスト。各フィルタはタプル (<property_name_as_str>, <query_operation_as_str>, <value>) です。ユーザー フィルタが最初に適用されます。

戻り値

datastore.Query インスタンス。

make_ascending_ndb_query(kind_class, keys_only=False, filters=None)ソース

スキャン方向を設定せずに、このキー範囲の NDB クエリを構築します。

パラメータ
  • kind_class – ndb.Model サブクラス。

  • keys_only - ブール値、デフォルトは False、キーのみクエリを実行します。

戻り値

ndb.Query インスタンス。

make_ascending_query(kind_class, keys_only=False, filters=None)ソース

スキャン方向を設定せずに、このキー範囲のクエリを構築します。

パラメータ
  • kind_class - kind 実装クラス(サブクラス db.Model または ndb.Model)。

  • keys_only - ブール値、デフォルトは False、キーのみクエリを実行します。

  • filters - クエリに適用するフィルタのオプションのリスト。各フィルタはタプル (<property_name_as_str>, <query_operation_as_str>, <value>) です。ユーザー フィルタが最初に適用されます。

戻り値

db.Query または ndb.Query インスタンス(kind_class に対応)。

make_directed_datastore_query(kind, keys_only=False)ソース

スキャン方向を含む、このキー範囲のクエリを構築します。

パラメータ
  • kind - 文字列。

  • keys_only - ブール値、デフォルトは False、クエリで keys_only を使用しますか?

戻り値

datastore.Query インスタンス。

発生するエラー

KeyRangeError – self.direction が(KeyRange.ASC, KeyRange.DESC)にない場合。

make_directed_ndb_query(kind_class, keys_only=False)ソース

スキャン方向を含む、このキー範囲の NDB クエリを構築します。

パラメータ
  • kind_class – ndb.Model サブクラス。

  • keys_only - ブール値、デフォルトは False、クエリで keys_only を使用しますか?

戻り値

ndb.Query インスタンス。

発生するエラー

KeyRangeError – self.direction が(KeyRange.ASC, KeyRange.DESC)にない場合。

make_directed_query(kind_class, keys_only=False)ソース

スキャン方向を含む、このキー範囲のクエリを構築します。

パラメータ
  • kind_class - kind 実装クラス(サブクラス db.Model または ndb.Model)。

  • keys_only - ブール値、デフォルトは False、クエリで keys_only を使用しますか?

戻り値

db.Query または ndb.Query インスタンス(kind_class に対応)。

発生するエラー

KeyRangeError – self.direction が(KeyRange.ASC, KeyRange.DESC)にない場合。

static split_keys(key_start, key_end, batch_size)ソース

key_start と key_end の間にあるキーを返します。

このメソッドは、key_start と key_end の祖先パスのコンポーネントを比較します。異なるパスの最初の場所は、ほぼ半分に分割されています。kind コンポーネントが異なる場合、2 つの中間にある新しい存在しない kind が空間を分割するために使用されます。id_or_name コンポーネントが異なる場合、2 つの中間にある新しい id_or_name が選択されます。下位の id_or_name が数値で、上位の id_or_name が文字列の場合、最小文字列のキー u" が分割された id_or_name として使用されます。返されるキーは祖先パスの共有部分です。パスの後に生成された分割コンポーネントが続きます。

パラメータ
  • key_start – db.Key または ndb.Key インスタンス(範囲の下端)。

  • key_end – db.Key または ndb.Key インスタンス(範囲の上端)。

  • batch_size - 分割しない範囲の最大サイズ。

戻り値

db.Key インスタンス、k(key_start <= k <= key_end)。

注: ndb.Key インスタンスは引数として受け入れられても、戻り値は常に db.Key インスタンスです。

split_range(batch_size=0)ソース

このキー範囲を最大で 2 つの範囲のリストに分割します。

このメソッドは、キー範囲をほぼ半分に分割しようとします。数値範囲は中央で 2 つの等しい範囲に分割され、文字列範囲は中間で辞書的に分割されます。キー範囲が batch_size よりも小さい場合は、分割されません。

分割は、キー範囲内の実際のエンティティの配分を知らずに行われるため、その範囲のエンティティが均等に分割されている保証はありません(そう考える具体的な理由もありません)。

パラメータ

batch_size - 分割してはならないキー範囲の最大サイズ。

戻り値

この範囲と同じスペースを対象とする 1 つまたは 2 つのキー範囲のリスト。

to_json()ソース

KeyRange を json にシリアル化します。

戻り値

KeyRange json 表現を持つ文字列。

exception google.appengine.ext.key_range.KeyRangeErrorソース

ベース: google.appengine.ext.key_range.Error

KeyRange を生成しようとしているときのエラー。

exception google.appengine.ext.key_range.SimplejsonUnavailableErrorソース

ベース: google.appengine.ext.key_range.Error

使用できない json と simplejson で json 機能を使用する際のエラー。

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

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

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