我对SQLAlchemy中的过滤有些困惑。
我目前正在尝试过滤超过10周的条目,所以我有
current_time = datetime.datetime.utcnow() potential = session.query(Subject).filter(Subject.time < current_time - datetime.timedelta(weeks=10))
但是,potential.count()始终返回0。
potential.count()
0
我的理论是我没有正确使用filter语句,因为当我尝试使用非类型的列Column(DateTime())而是
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。
True
我缺少明显的东西吗?任何帮助,将不胜感激。
如果您将其切换<为a >,则可以获取最近十周内的所有主题:
<
>
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子句,其中 包含 与子句匹配的结果。因此,结果不是“过滤掉”的,而是包括在内的。
WHERE