1

MyModelのエンティティの子である必要があるキーのリストがあり(一部はそうではない場合があります)、トランザクションでそれらのキーによって参照されるエンティティを取得したいと思います。これを行う1つの方法は次のとおりです。

ifilter(None, ModelX.all().ancestor(Y).filter('__key__', xk).get() for xk in xkeys)

ただし、キーごとに個別のクエリを実行するのは非効率的なようです。トランザクション内のキーのリストに対してIPN.get()を実行し、順序を維持しながら、BadRequestErrorをスローする代わりに、エンティティグループに属していないキーを無視する方法はありますか?

4

2 に答える 2

1

xkeys がキーのリストであると仮定します

results = [db.get(xk) for xk in xkeys]

しかし、私はあなたができると思います:

results = db.get(xkeys)

ああ、私はあなたが言ったことを読みました(しかし、そうでない人もいるかもしれません)。これが問題です。トランザクションに関与するすべてのエンティティは、同じ祖先グループに属している必要があります。したがって、これを機能させるには、同じ祖先を持たないエンティティをリストから削除する必要があります。

于 2012-12-12T06:04:04.810 に答える
0

私が尋ねたことを実行する方法がないようだったので、トランザクションからキーを返し、その外で db.get(ks) を実行しました。

于 2012-12-20T18:50:08.360 に答える