这是我的“请求”类/表:
class Request(BaseModel):
TIME_STAMP = DateTimeField(default=datetime.datetime.now)
MESSAGE_ID = IntegerField()
Run Code Online (Sandbox Code Playgroud)
对于 peewee,我想从表中选择过去 10 分钟内发生的所有“请求”。像这样的东西:
rs = Request.select().where(Request.TIME_STAMP-datetime.datetime.now<(10 minutes))
Run Code Online (Sandbox Code Playgroud)
但是,我不完全确定如何获取 TIME_STAMP 和当前时间(以分钟为单位)之间的差异。
编辑:我已经尝试过 Gerrat 的建议,但 Peewee 似乎哭了:
/usr/local/lib/python2.7/dist-packages/peewee.py:2356: Warning: Truncated incorrect DOUBLE value: '2014-07-19 15:51:24'
cursor.execute(sql, params or ())
/usr/local/lib/python2.7/dist-packages/peewee.py:2356: Warning: Truncated incorrect DOUBLE value: '0 0:10:0'
cursor.execute(sql, params or ())
Run Code Online (Sandbox Code Playgroud)
我从未使用过 peewee,但如果您只是减去两个时间戳,那么您将得到一个datetime.timedelta对象。然后您应该能够将它与另一个 timedelta 对象进行比较。就像是:
rs = Request.select().where(Request.TIME_STAMP-datetime.datetime.now()
<(datetime.timedelta(seconds=10*60)))
Run Code Online (Sandbox Code Playgroud)
编辑 ...仔细看看 peewee,上面可能不起作用。如果没有,那么应该像下面这样:
ten_min_ago = datetime.datetime.now() - datetime.timedelta(seconds=10 * 60)
rs = Request.select().where(Request.TIME_STAMP > ten_min_ago)
Run Code Online (Sandbox Code Playgroud)
数据库中的时间戳会大于当前时间(您的选择假设的时间)似乎有点奇怪...因此您可能需要添加时间增量并减去相反的值(例如,如果您想选择最近 10 分钟内的记录)。
| 归档时间: |
|
| 查看次数: |
1653 次 |
| 最近记录: |