Sqlalchey запрос фильтр даты с форматом строки - PullRequest
1 голос
/ 18 марта 2020

У меня есть sqldb, где дата закодирована в виде строки. С помощью sqlalchemy мне нужно реализовать запрос, где дата используется в качестве фильтра (дата в заданном диапазоне c). Я пытался определить гибридный метод, но кажется, что datetime.strptime не может использоваться здесь ( "TypeError: strptime () аргумент 1 должен быть str, а не InstrumentedAttribute" )

У вас есть идеи (может быть, другой подход, чем гибридный метод), как заставить его работать?

Пример кода:

class Sample(db.Model):
__tablename__ = "sample"

id = db.Column(db.Integer, primary_key=True)
date = db.Column(db.String(32))

@hybrid_property
def date2(self):
    return datetime.datetime.strptime(self.date, "%Y-%m-%d")

@date2.expression
def date2(cls):
    return datetime.datetime.strptime(cls.date, "%Y-%m-%d")

...

date_min = datetime.datetime(2020, 1, 1)
date_max = datetime.datetime(2020, 3, 31)
out = Sample.query.filter_by(date2 > date_min, date2 < date_max).all()

1 Ответ

1 голос
/ 18 марта 2020

Вы можете использовать функцию STR_TO_DATE в MySQL:

from sqlalchemy import func

@date2.expression
def date2(cls):
    return func.str_to_date(cls.date, "%Y-%m-%d")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...