SQLAlchemy игнорирует None при сравнении даты - PullRequest
0 голосов
/ 08 апреля 2019

Я хотел бы получить строки из указанного диапазона дат, но когда лимитером является Нет (beg_date == Нет, fin_date == Нет), я хочу игнорировать область действия с одной стороны.

Например: Если 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)

1 Ответ

1 голос
/ 08 апреля 2019

Вы можете построить ваше условие даты с условиями 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)

Я не тестировал его, но он должен работать с возможными мелкими исправлениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...