python - AppEngine Pythonと 'IN'範囲のクエリを使用したデータモデリング

python google-app-engine

文字列型のアドレスのリストがあり、リストの内容と場所の値が一致するすべてのイベントを検索したいと思います。私はそのようなエントリを何千も持っているので、30アイテム/フェッチの制限を超えたため、フィルターで「IN」を使用しても機能しません。

これが私がフィルターをやろうとしている方法です:

# addresses come in as list of string items
addresses = ['123 Main St, Portland, ME', '500 Broadway, New York, NY', ...];

query = Event.all();
query.filter('location IN ', addresses);
# above causes the error: 
<class 'google.appengine.api.datastore_errors.BadArgumentError'>:
Cannot satisfy query -- too many subqueries (max: 30, got 119). 
Probable cause: too many IN/!= filters in query.


私のモデルクラス:

class Event(GeoModel):
  name = db.StringProperty();
  location = db.PostalAddressProperty();  


特定の基準に一致するすべてのエントリを見つけるより良い方法はありますか?
答え
複数のクエリ以外にこれを回避する方法はありません。結局のところ、さまざまなアドレスに対する一連のクエリの組み合わせ結果を求めているのです。これが、データストアに「IN」クエリが実装される方法です。並列で実行できるように、ndbクエリまたは非同期クエリの使用を検討したい場合があります。

おそらく、達成しようとしていることを説明できれば、より効率的なアプローチを提案できます。
関連記事

python - SqlAlchemy:動的クエリ

python - vplineとvlinesをmatplotlibのピクセル全体にスナップする

javascript - 良い例/テンプレート/ベストプラクティスAPIドキュメント

python - Django:より複雑な一意性制約?

python - Pythonでデータストアを適切にクエリする方法は? -基本的な問題

python - djangoを使用してFacebookのメールを取得する

python - Pythonがサブプロセスと通信する

python - ソラリス上のpython numpy、遅い、またはリンクされていませんか?

python - Google App EngineのSSLError(ローカル開発サーバー)

python - Django:STATIC_URLはappnameをURLに追加します