2011-10-24 8 views
1

私はうまく機能し、次のコードを、持っている:gqlタイプのクエリをQueryと置き換えるにはどうすればいいですか?

comments = PersonComment.gql('WHERE ANCESTOR IS :parent AND verified=True ORDER BY added DESC', parent=person_key).fetch(PAGE_SIZE_COMMENTS+1, (page)*PAGE_SIZE_COMMENTS) 

を私はそれを交換したい:

comments = db.Query(PersonComment) 
    comments.ancestor(person_key) 
    comments.filter('verified = ', True) 
    comments.order('-added') 
    comments.fetch(PAGE_SIZE_COMMENTS+1, (page)*PAGE_SIZE_COMMENTS) 

しかし、それは動作しません。何がそこに間違っていますか?

答えて

5

fetchは結果セットを返します。 commentsは依然としてQueryオブジェクトです。

comments = comments.fetch(PAGE_SIZE_COMMENTS+1, (page)*PAGE_SIZE_COMMENTS)

や混乱を避けるために、他のクエリオブジェクトに何かを呼び出す:あなたはこれを行うことができます。

ページめくりにオフセットを使用してフェッチを使用することは、実際には非効率的です。 query cursorsの使用を検討してください。

+0

ありがとう、ドリュー。フェッチは実際にすべてのレコードを読み込み、私が要求したもの(カーソルと比較したもの)を返しますか?なぜ私はカーソルを使うべきですか? –

+0

@LA_オフセットを使ってクエリを取り除き、提案どおりにカーソルを使用してください。オフセットを使用したクエリは非効率的であり、課金的には多くのDatastoreの読み込みにコストがかかります。 – systempuntoout

関連する問題