8

私は単純なSQLAlchemyモデルを持っています:

class Event(Base):
    """ The SQLAlchemy declarative model class for a Event object. """
    __tablename__ = 'events'
    id = Column(Integer, primary_key=True)
    date = Column(DateTime)
    title = Column(Text)

特定の月のイベントのみが返されるようにSQLAlchemyクエリをフィルタリングするにはどうすればよいですか?

4

3 に答える 3

18

非常に古い質問ですが、より良い答えはここにあります:

from sqlalchemy import extract  

session.query(Event).filter(extract('month', Event.date)==7).all()

これにより、7月のデータベースイベントにすべてのレコードが返されます。

于 2015-07-26T20:15:57.557 に答える
9

これにより、2012年6月のすべてのイベントが見つかります。

import datetime
import calendar

year = 2012
month = 6

num_days = calendar.monthrange(year, month)[1]
start_date = datetime.date(year, month, 1)
end_date = datetime.date(year, month, num_days)

results = session.query(Event).filter(
    and_(Event.date >= start_date, Event.date <= end_date)).all()
于 2012-07-23T19:19:24.750 に答える
9

ブレイディ・ファンが思っていたのと同じことを考えていました。したがって、@ scottydeltaの優れた答えを拡張するには、フィルターを互いに積み重ねることができます。したがって、2018年7月のすべてのイベントを抽出する場合は、

from sqlalchemy import extract  

session.query(Event).filter(extract('year', Event.date)==2018).filter(extract('month', Event.date)==7).all()
于 2019-04-07T11:31:20.203 に答える