Google App Engine のドキュメントから:
「cursor() は、最後に取得された結果に続くクエリの結果セット内の位置を示す、base64 でエンコードされたカーソル文字列を返します。」
取得された最後の結果がクエリ セットの最後の結果である場合、何を返しますか? これは、最後に取得した結果に「続く」位置がないことを意味するのではないでしょうか? したがって、「なし」が返されますか?
Google App Engine のドキュメントから:
「cursor() は、最後に取得された結果に続くクエリの結果セット内の位置を示す、base64 でエンコードされたカーソル文字列を返します。」
取得された最後の結果がクエリ セットの最後の結果である場合、何を返しますか? これは、最後に取得した結果に「続く」位置がないことを意味するのではないでしょうか? したがって、「なし」が返されますか?
最後の結果が取得された場合でも、カーソルは残ります。クエリクラスは、いずれの場合もそれを認識していません。つまり、クエリクラスは、あなたがすでに持っていたものを知っていますが、他に何がまだ来るのかを知りません。カーソルは実際の結果を表すものではなく、後でクエリを再開するための方法にすぎません。実際、最初のクエリでデータセットの最後に到達した場合でもカーソルを使用することは可能ですが、後で更新すると、たとえば注文している場合など、後続のリクエストで新しいアイテムが見つかるようになります。最終更新時刻まで。
(良いユーザー名、ところで:いくつかのPKDが大好きです。)
すべての結果が消費された場合、カーソルはその位置を指すだけです。
つまり、カーソルは、データストアにさらに項目を追加した場合に新しい結果が表示される場所を指しています。データストア クエリのドキュメントから:
カーソルは、結果の次のスキャンを開始するクエリのインデックス内の場所をマークします。そのため、クエリの結果リスト内の相対的なオフセットを表すのではなく、特定の結果に続く位置を表します。カーソルを使用するたびにクエリの結果が変わる場合、インデックス内のカーソル位置に続く変更のみが、後続の検索の結果に影響します。
cursor()
メソッドは を返しませんNone
。