按条款分组烧瓶炼金术

group by clause flask alchemy

sample = {
        '13-18':50,
        '19-25':60,
        '25-40':50,
        '50-80':100

    }

我想找到属于上述类别的用户数,即分别从年龄 13-18, 19-25 开始,我将如何使用 SQLalchemy 进行查询,我我只有出生日期字段可以使用

dob : 07/10/2005

DOB就是上面提到的格式

您应该添加更多详细信息。您的数据库是什么(postres、mysql、其他?)?根据数据库的不同,有不同的内置函数集。 dob 列的类型是什么?它是字符串还是日期时间。 在 postgreSQL 中,您的实现可能是:

select 
case 
    when age < 13 then '0-12'
    when age >= 13 and age < 25 then '13-25'
    when age >= 25 and age < 40 then '25-40'
    when age >= 41 and age < 80 then '41-80'
    else '80+'
end as range,
count(*)
from (
  SELECT 
  1 + extract('years' from justify_interval(now() - to_date(dob, 'DD/MM/YYYY'))) as age 
  from table
) x
group by range

您可以将其重写为 sqlalchemy 语法,但这很棘手。您还可以在 sqlalchemy 中使用原始 sql 执行,例如:

from sqlalchemy.sql import text

statement = text(<sql_above>)
result = session.execute(statement)