我对SQLAlchemy中的过滤有点困惑。
我目前正在尝试过滤超过10周的条目,所以我有
current_time = datetime.datetime.utcnow()
potential = session.query(Subject).filter(Subject.time < current_time - datetime.timedelta(weeks=10))
但是,potential.count()
始终返回0
。
我的理论是我没有正确使用filter语句,因为当我尝试使用不是Column(DateTime())
类型的列,而是使用它时
列(字符串(250))
喜欢
potential = session.query(Subject).filter(Subject.string_field < current_time - datetime.timedelta(weeks=10))
SQLAlchemy仍然不会抱怨。
另外,当我手动检查
curr_time - session.query(Subject).first().time > datetime.timedelta(weeks=10)
我得到了True
,这意味着计数不应该是0
。
我是不是漏掉了什么明显的东西?任何帮助都将不胜感激。
发布于 2013-07-26 15:11:54
如果您将<
切换为>
,则可以获取最近10周内的所有主题:
current_time = datetime.datetime.utcnow()
ten_weeks_ago = current_time - datetime.timedelta(weeks=10)
subjects_within_the_last_ten_weeks = session.query(Subject).filter(
Subject.time > ten_weeks_ago).all()
筛选器生成一个WHERE
子句,其中包含与该子句匹配的结果。因此,结果不会被“过滤掉”,而是会被包括在内。
https://stackoverflow.com/questions/17868743
复制相似问题