我有这堂课:
class Monitor(db.Model):
'''
Base Monitor class.
'''
__tablename__ = 'monitor'
id = db.Column(db.Integer(), primary_key=True)
last_checked = db.Column(db.DateTime(timezone=False))
poll_interval = db.Column(db.Interval(),
default=datetime.timedelta(seconds=300))
我有这个查询,我尝试只返回自(now - interval)以来未被检查过的对象:
monitors = db.session.query(Monitor).\
filter(or_(Monitor.last_checked < (datetime.utcnow() - Monitor.poll_interval)),
Monitor.last_checked == None).\
all()
但查询没有返回任何内容。我很难找到正确的方法来做到这一点。我是在正确的轨道还是我错过了什么?我正在使用MySQL作为数据库。
答案 0 :(得分:6)
你的括号错了。我相信你想要的是:
monitors = db.session.query(Monitor).\
filter(or_(Monitor.last_checked < (datetime.utcnow() - Monitor.poll_interval),
Monitor.last_checked == None)).\
all()