4
我有這個類:比較DateTime和間隔在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))
而且我有這個疑問,我試圖只返回沒有因爲檢查對象(現在 - 間隔):
monitors = db.session.query(Monitor).\
filter(or_(Monitor.last_checked < (datetime.utcnow() - Monitor.poll_interval)),
Monitor.last_checked == None).\
all()
但是,查詢不會返回任何內容。我很難找出正確的方法來做到這一點。我在正確的軌道上還是錯過了某些東西?我使用MySQL作爲數據庫。
你可以打印出一個查詢對象(即,你調用'.all()'之前有什麼)來獲得將要運行的實際SQL。我唯一的猜測是SQLA不知道使用古怪的'date - INTERVAL 3 DAYS'語法 – Eevee
這是它給了我什麼。 '選擇monitor.id AS monitor_id,monitor.last_checked AS monitor_last_checked,monitor.poll_interval AS monitor_poll_interval 從顯示屏 WHERE monitor.last_checked <:poll_interval_1 - monitor.poll_interval' – Mark