首页 > 解决方案 > 如何在 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

标签: pythonsqlalchemy

解决方案


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

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

推荐阅读