48

我对 SQLAlchemy 中的过滤有点困惑。

我目前正在尝试过滤掉超过 10 周的条目,所以我有

current_time = datetime.datetime.utcnow()

potential = session.query(Subject).filter(Subject.time < current_time - datetime.timedelta(weeks=10))

但是,potential.count()总是返回0

我的理论是我没有正确使用过滤器语句,因为当我尝试使用不是类型的列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.

我错过了一些明显的东西吗?任何帮助,将不胜感激。

4

1 回答 1

84

如果您切换<到 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子句,其中包括与该子句匹配的结果。所以结果不是“过滤掉”而是包括在内。

于 2013-07-26T07:11:54.183 回答