如何在sqlalchemy中的filter语句之间创建动态操作?

时间:2018-06-14 08:22:10

标签: python sqlalchemy

我想在操作和语句

之间添加过滤器

表有生日列,所以我必须使用它。

首先我尝试这个sql

select birthdate from user_table
where ROUND((CURRENT_DATE - birthdate) / 365) between 10 and 30

似乎在数据库中找到,但我不知道如何在sqlalchemy中写作

我试过这段代码

user_tag = session.query(
    (datetime.datetime.now() - UserTags.birthdate) / 365
).all()

我得到了结果,但是当我尝试使用过滤器时,我迷失了方向

user_tag = session.query(
    User.birthdate
).filter(
    ???? // I want to use it with between statement.
).all()

如何让sqlachemy代码对应

select birthdate from user_table
where ROUND((CURRENT_DATE - birthdate) / 365) between 10 and 30

1 个答案:

答案 0 :(得分:1)

形成函数表达式并应用between()

user_tag = session.query(
    func.round((func.current_date() - UserTags.birthdate) / 365).between(10, 30)
).all()