2013-07-25 2 views
23

SQLAlchemyでのフィルタリングについて少し混乱しています。フィルタで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) 

と手動チェックを行う際にも

、私はカウントが0てはならないことを意味Trueを取得します。

明らかなものがありませんか?どんな助けもありがとう。

答えて

36

あなたは><を切り替える場合は、最後の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句を生成します。したがって、結果は「除外」されませんが、含まれます。

関連する問題