今から数時間前・数日前のエンティティをまとめて削除するクエリ

datetime モジュールの timedelta を有効活用します。


まず、次のようなモデルクラスの定義を仮定します。

#
# models.py
#
from google.appengine.ext import db

# データストア定義
class Entry(db.Model):
    published = db.DateTimeProperty()


timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]]) は、任意引数 weeks, days, hours, minutes, seconds, ... の組み合わせで差分時間を作成できます。
以下に、今から 60 分より前の Entry エンティティを削除する場合の手順を示します。

import datetime
import models

# 今から 60 分前を表す datetime インスタンスを作成
old_time = datetime.datetime.now() - datetime.timedelta(minutes=60)

query = models.Entry().all()
query.filter('published <', old_time)  # 60 分未満の Entry エンティティを取得
db.delete(query)  # 削除


たとえば、一日半より以前の時刻を表したい場合は次のようになります。

old_time = datetime.datetime.now() - datetime.timedelta(days=1, horus=12)