python - 从 google-app-engine ndb 中删除日期时间早于 N 秒的实体

标签 python google-app-engine app-engine-ndb

我想从 ndb 中删除旧实体。这些实体有一个名为 date 的 ndb.DateTimeProperty(auto_now_add=True) 属性:

class Mjcode(ndb.Model):
    code = ndb.StringProperty()
    ifv = ndb.StringProperty()
    date = ndb.DateTimeProperty(auto_now_add=True)

这是我已经走了多远:

mjcode_keys = Mjcode.query().fetch(keys_only=True)
countOfMjcodes = len(mjcode_keys)
self.response.write('Mjcode - found entity count: ' + str(countOfMjcodes) + '<br/>')
if countOfMjcodes > 0:
    self.response.write('Deleting...<br/>')
    ndb.delete_multi(mjcode_keys)
else:
    self.response.write('No delete needed.<br/>')

这会删除实体,但此时它会删除所有实体。我应该输入什么语法 - 我想在 query() 内部?假设我想清除所有早于 X 秒的实体。

最佳答案

您可以 filter queries像这样:

import datetime
earliest = datetime.datetime.now() - datetime.timedelta(days=7)
Mjcode.query(Mjcode.date <= earliest).fetch(keys_only=True)

这将删除任何超过 7 天的实体。您可以编辑 datetime.timedelta更改删除实体的时间。

关于python - 从 google-app-engine ndb 中删除日期时间早于 N 秒的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21425293/

相关文章:

python - 基于 Pandas 数据框中列比较的条件累积和

Python:最有效的循环直到条件

java - JAVA GAE 的 OpenID 消费者

android - Protobuffers错误将库添加到android

python - 与 Google App Engine 上的 NDB 的多对多关系

python - 如何用 Pandas 创建高低开收盘图表

Python 整数测试

mysql - 批量调用过程中的重复条目

python - 如何从字典填充 StructuredProperty?

google-app-engine - Appengine NDB : Putting 880 rows, 超出数据存储区写入操作配额。为什么?