我有一个简单的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查询,以便仅返回特定月份的事件?
答案 0 :(得分:9)
一个非常古老的问题,但更好的答案在这里:
from sqlalchemy import extract
session.query(Event).filter(extract('month', Event.date)==7).all()
这会将所有记录返回到7月份的数据库事件中。
答案 1 :(得分:7)
这应该会在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()
答案 2 :(得分:1)
我想知道布雷迪·黄(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()