#python #python-3.x #postgresql #sqlalchemy
#python #python-3.x #postgresql #sqlalchemy
Вопрос:
Я хотел бы получить строки из указанного диапазона дат, но когда ограничитель равен None (beg_date==None, fin_date==None) Я хочу игнорировать область видимости с одной стороны.
Например: если beg_date==’2019-10-23′ и fin_date==None, я хотел бы получить обновленные строки с 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)
Ответ №1:
Вы могли бы создать свое условие даты с помощью условий Python start_date
и end_date
перед построением всего вашего запроса:
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)
Я не тестировал его, но он должен работать с возможными незначительными исправлениями.