特定のタイプの日付範囲内でいくつかの値を検索しようとしていますが、データベースに存在する日付のコンテンツがクエリによって返されません。
以下は Python コードの抜粋です。
deltaDays = timedelta(days= 20)
endDate = datetime.date.today()
startDate = endDate - deltaDays
result = db.GqlQuery(
"SELECT * FROM myData WHERE mytype = :1 AND pubdate >= :2 and pubdate <= :3", type, startDate, endDate
)
class myData(db.Model):
mytype = db.StringProperty(required=True)
value = db.FloatProperty(required=True)
pubdate = db.DateTimeProperty(required=True)
GQL はデータを返しますが、期待しているいくつかの行が欠落しています。
2009-03-18 00:00:00
(missing date in results: 2009-03-20 data exists in database)
2009-03-23 00:00:00
2009-03-24 00:00:00
2009-03-25 00:00:00
2009-03-26 00:00:00
(missing date in results: 2009-03-27 data exists in database)
2009-03-30 00:00:00
(missing date in results: 2009-03-31. data exists in database)
2009-04-01 00:00:00
2009-04-02 00:00:00
2009-04-03 00:00:00
2009-04-06 00:00:00
バルクロード スクリプトを使用してデータをアップロードしました。インデックスが壊れているか、それに似たものだと思います。この同じクエリは、私が持っていた別のテーブルで機能していました。しかし、別のソースからの新しいコンテンツに置き換える必要があり、この新しいコンテンツは同じようにクエリに応答しません。それが違いを生む場合、テーブルには約700.000行があります。
さらに調査を行ったところ、appEngine DataStore のバグのようです。バグの詳細については、次のリンクを確認してください: http://code.google.com/p/googleappengine/issues/detail?id=901
インデックスを削除して再作成しようとしましたが、うまくいきませんでした。
ありがとう