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()

这会将所有记录返回到数据库中的七月事件。

于 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

我想知道的事情和 Brady Huang 想的一样。因此,扩展@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 回答