クエリーをフィルタリングしているときに、App Engineのローカルdevserverで奇妙な動作が見られました。App Engine devserverクエリフィルタが機能しない
私はこのシャードカウンターを実装しました。
http://code.google.com/appengine/articles/sharding_counters.html
そして、これは私が見ているものです:
- 私はカウンタをインクリメントし、カウンタエンティティが正常に作成され、それが必要としてカウントが更新されます。
- 私はget_count()を呼び出すと、作成されたGeneralCounterShardエンティティの数を返します。
- すぐにgetCount()を呼び出すと何も返されません。
デバッグ後、私がカウントしたいGeneralCounterShardエンティティと一致する必要があるクエリが、提供された名前と一致しないことがわかりました。
def get_count(name):
"""Retrieve the value for a given sharded counter.
Parameters: name - The name of the counter """
total = memcache.get(name)
if total is None:
total = 0
for counter in GeneralCounterShard.all().filter('name = ', name):
total += counter.count
memcache.add(name, total, 60)
return total
は、データベース内の指定された名前を持つ GeneralCounterShardエンティティが存在している間そこで、上記のコードでは、フィルタは何も一致していません。
私はApp EngineとPythonの初心者だと言わなければならないが、なぜこれがしばらく動作していないのか分かりませんし、もはやそれはありません。エンティティはまだデータベースにあります。
これは何らかの種類のバグですか、何か不足していますか?
ありがとうございます!
'name'は大文字と小文字を区別します。あなたは 'getCount()'の両方の呼び出しで同じケーシングを使用していますか? –
私はまだこれがなぜ起こるのか分かりません。しかし、プロダクションサーバーにコードをアップロードすると、すべて正常に動作します。コードに何も問題はありませんが、開発サーバーやdevサーバーでは理解できないものがあります...もう問題ではありません。 – Quint