SQLAlchemy忽略对"None"的比较.

2024-05-19 00:07:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望从指定的日期范围中获取行,但当limiter为None(beg_date==None,fin_date==None)时,我希望忽略一侧的范围

例如: 如果beg_date='2019-10-23'和fin_date==无,我希望得到 2019年10月23日至今的行。 如何使用SQLAlchemy实现这一点

型号:

class MyModel(Model):
    date = Column(Date)

代码:

beg_date = some_dict.get('beg_date')
fin_date = some_dict.get('fin_date')

session.query(MyModel).filter(MyModel.date.between(beg_date, find_date)

Tags: nonegetdatemodelsqlalchemycolumnsomedict
1条回答
网友
1楼 · 发布于 2024-05-19 00:07:26

在构建整个查询之前,您可以在start_dateend_date上使用Python条件构建日期条件:

if start_date and end_date:
    date_condition = MyModel.date.between(start_date, end_date)
elif start_date:
    date_condition = MyModel.date > start_date
elif end_date:
    date_condition = MyModel.date < end_date
else:
    date_condition = true()  # sqlalchemy.true()

session.query(MyModel).filter(date_condition)

我没有测试它,但它应该与潜在的小修复工作

相关问题 更多 >

    热门问题