今から数時間前・数日前のエンティティをまとめて削除するクエリ
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)