Множественный экстракт SQLAlchemy в выражениях гибридных свойств - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть таблица с Column(Date), и я хочу фильтровать запросы с помощью кортежа (month, day), например:

ses.query(MyTable).filter_by(month_day=(3, 25))

Итак, внутри своей таблицы я создал гибридное свойство:

class DataLine(Base):
    # ....

    @hybrid_property
    def date_month_day(self):  # this is working for output
        return self.date.month, self.date.day

    @date_month_day.expression
    def date_month_day(self):  # does not work for querying
        # return always empty results
        return extract('month', DataLine.date), extract('day', DataLine.date)

Я не хочу разделять свойства между месяцем и днем, как заставить его работать с кортежем ввода?Это вообще возможно?

1 Ответ

0 голосов
/ 03 декабря 2018

То есть, используя конструкцию tuple_() в выражении гибридного свойства:

@date_month_day.expression
def date_month_day(self):
    return tuple_(extract('month', DataLine.date), extract('day', DataLine.date))

Причина, по которой это не сработало раньше, заключалась в том, что ваше выражение возвратило простой Pythontuple, сравнение происходило в Python, давая False.Другими словами, у вас фактически было

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