5

私はこのクラスを持っています:

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))

そして、(現在は-interval)以降にチェックされていないオブジェクトのみを返そうとするこのクエリがあります。

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

しかし、クエリは何も返しません。私はこれを行うための適切な方法を見つけるのに苦労しています。私は正しい方向に進んでいますか、それとも何かが足りませんか?私はデータベースとしてMySQLを使用しています。

4

1 に答える 1

7

あなたの括弧は間違っています。あなたが望むものは次のとおりだと思います:

monitors = db.session.query(Monitor).\
       filter(or_(Monitor.last_checked < (datetime.utcnow() - Monitor.poll_interval),
                  Monitor.last_checked == None)).\
       all()
于 2013-01-17T00:56:23.483 に答える