2012-02-20 9 views
1

クエリーをフィルタリングしているときに、App Engineのローカルdevserverで奇妙な動作が見られました。App Engine devserverクエリフィルタが機能しない

私はこのシャードカウンターを実装しました。

http://code.google.com/appengine/articles/sharding_counters.html

そして、これは私が見ているものです:

  1. 私はカウンタをインクリメントし、カウンタエンティティが正常に作成され、それが必要としてカウントが更新されます。
  2. 私はget_count()を呼び出すと、作成されたGeneralCounterShardエンティティの数を返します。
  3. すぐに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の初心者だと言わなければならないが、なぜこれがしばらく動作していないのか分かりませんし、もはやそれはありません。エンティティはまだデータベースにあります。

これは何らかの種類のバグですか、何か不足していますか?

ありがとうございます!

+0

'name'は大文字と小文字を区別します。あなたは 'getCount()'の両方の呼び出しで同じケーシングを使用していますか? –

+0

私はまだこれがなぜ起こるのか分かりません。しかし、プロダクションサーバーにコードをアップロードすると、すべて正常に動作します。コードに何も問題はありませんが、開発サーバーやdevサーバーでは理解できないものがあります...もう問題ではありません。 – Quint

答えて

1

この断片の中で:.filter( 'name ='、name)私は=の後にスペースを削除する必要があると思います。

関連する問題