これはとても奇妙です...
まず、このクエリはデータストア ビューアーで機能します。正しい行を返します。
SELECT * FROM Level where short_id = 'Ec71eN'
しかし、これを実行すると
Level.all().filter("short_id = ", 'Ec71eN').get()
これを実行すると、Noneが返されます。
db.GqlQuery("SELECT * FROM Level where short_id = '%s'" % 'Ec71eN').get()
また、 Noneを返します。これを実行すると:
level = Level.get_by_id(189009)
正しい行を返します(189009は正しい行のIDです)
不可解?ここで何が問題なのですか?私はこれまでにこのようなものを見たことがありません.本番環境では少なくとも数週間は正しく機能していました...今日から機能しないケースが少なくとも2つあると思います.
更新:上記を試したときに行が7時間経過していたため、これは最終的に一貫した問題になることはありません。同じ症状の列が 2 列ありました。不思議なことに、同じユーザーによってブースが生成されました。次のような特別なケースのコードをアップロードして、ID を手動で修正した後、ブースは「修正」されました。
if short_id==CASE_1_SHORT_ID:
level = Level.get_by_id(CASE_1_ID)
その後、クエリは通常どおり機能しました。