比较SQLAlchemy中的DateTime和Interval

Mar*_*ark 5 python mysql sqlalchemy flask-sqlalchemy

我有这门课:

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))
Run Code Online (Sandbox Code Playgroud)

我有这个查询,我尝试只返回自(now - interval)以来未检查过的对象:

monitors = db.session.query(Monitor).\
           filter(or_(Monitor.last_checked < (datetime.utcnow() - Monitor.poll_interval)),
                      Monitor.last_checked == None).\
           all()
Run Code Online (Sandbox Code Playgroud)

但查询没有返回任何内容.我很难找到正确的方法来做到这一点.我是在正确的轨道还是我错过了什么?我正在使用MySQL作为数据库.

小智 7

你的括号错了.我相信你想要的是:

monitors = db.session.query(Monitor).\
       filter(or_(Monitor.last_checked < (datetime.utcnow() - Monitor.poll_interval),
                  Monitor.last_checked == None)).\
       all()
Run Code Online (Sandbox Code Playgroud)