Python 如何获取日期在特定月份的所有对象SQLAlchemy

Python 如何获取日期在特定月份的所有对象SQLAlchemy,python,sqlalchemy,Python,Sqlalchemy,我有一个简单的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) 如何筛选SQLAlchem

我有一个简单的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查询,以便只返回特定月份的事件?

这将查找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年
月=6
num_days=calendar.monthrange(年、月)[1]
开始日期=日期时间日期(年、月、1)
结束日期=日期时间。日期(年、月、天数)
结果=session.query(Event.filter)(

(Event.date>=开始日期,Event.date这是一个非常古老的问题,但更好的答案是:

from sqlalchemy import extract  

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

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

我想知道的事情与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()

您是否需要过滤特定月份的事件(例如:2012年6月,在这种情况下@Tony的答案很好)或不考虑年份的6月事件?如果您希望同时提取月份和年份,该怎么办?