SQLAlchemy 根据月份字段,获取某月份的数据

这个方法要使用extract函数,这个函数可以从datetime字段中分解出年月。不过在flask_sqlalchemy中没有extract,所以只能从sqlalchemy包导入。

from sqlalchemy import extract
# 获取12月份的所有数据
historys = Search.query.filter(extract('month', Search.created_at) == 12).all()

但是用上面的查询会把往年的12月也查询出来,那么就加上年份的查询

from sqlalchemy import extract, and_
# 获取2020年12月份的数据
historys = Search.query.filter(and_(
    extract('year', Search.created_at) == 2020,
    extract('month', Search.created_at) == 12
).all()

经过修改可以获取某年的每月的数据总数,我觉得这个办法不是最好的,但是目前没找到更合适的,希望有好办法的同学可以评论告知一下哈!!!

from sqlalchemy import extract, and_, func

 # 获取2020年的所有数据
 historys = db.query(Search).filter(and_(extract('year', Search.created_at) == 2020,extract('month', Search.created_at).in_([1,2,3,4,5,6,7,8,9,10,11,12]))).all()
 historys = db.query(Search).filter(and_(extract('year', Search.created_at) == 2020)).all()
 # 获取具体每月的所有数据
 mouths = [1,2,3,4,5,6,7,8,9,10,11,12]
    for i in mouths:
        t = db.query(func.count(Search.id)).filter(and_(extract('year', Search.created_at) == 2020,extract('month', Search.created_at) == i)).all()
        y = db.query(func.count(VideoIds.id)).filter(and_(extract('year', VideoIds.vdate) == 2020,extract('month', VideoIds.vdate) == i)).all()
        f = db.query(func.count(FaceArticle.id)).filter(and_(extract('year', FaceArticle.time) == 2020,extract('month', FaceArticle.time) == i)).all()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值