如何直接在 SQLalchemy 的过滤器中对结果设置条件?
How to put a condition on a result directly in a filter in SQLalchemy?
我有一个 table 这样的:
class Continent(Base):
__tablename__ = "continents"
id = Column(Integer, primary_key=True, index=True)
name = Column(String(100), unique=True)
created_date: Column(Integer)
season_created = Column(Integer)
我希望能够根据创建日期检索我的大陆列表。
所以,我将花费一年和一个季节(例如,日期:10,一个季节:1)
我想获取所有早于过去日期的日期。
所以我会这样做:
db.query(Continent).filter(Continent.created_date <= date_year).all()
但是,我仍然需要检查如果结果的年份与请求的年份相同,我必须检查季节,以确保请求的季节早于数据的季节.
所以我的问题是:
如何在查询期间直接检查条件?
最后,在我看来最连贯的解决方案是使用 case
db.query(Continent).filter(case(Continent.created_date < date_years,Continent.created_date < date_years),
(Continent.created_date == date_years, Continent.season_created <= season),)).all()
我有一个 table 这样的:
class Continent(Base):
__tablename__ = "continents"
id = Column(Integer, primary_key=True, index=True)
name = Column(String(100), unique=True)
created_date: Column(Integer)
season_created = Column(Integer)
我希望能够根据创建日期检索我的大陆列表。 所以,我将花费一年和一个季节(例如,日期:10,一个季节:1)
我想获取所有早于过去日期的日期。 所以我会这样做:
db.query(Continent).filter(Continent.created_date <= date_year).all()
但是,我仍然需要检查如果结果的年份与请求的年份相同,我必须检查季节,以确保请求的季节早于数据的季节.
所以我的问题是: 如何在查询期间直接检查条件?
最后,在我看来最连贯的解决方案是使用 case
db.query(Continent).filter(case(Continent.created_date < date_years,Continent.created_date < date_years),
(Continent.created_date == date_years, Continent.season_created <= season),)).all()