Flask-SQLALchemy筛选出日期等于今天的数据

User类:

class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(20), unique=True)
    username = db.Column(db.String(30), unique=True)
    password = db.Column(db.String(128))
    create_time = db.Column(db.DateTime, nullable=False, default=datetime.utcnow, index=True)
    

查询数据:

 users = User.query.filter(db.cast(User.create_time , db.DATE) == db.cast(datetime.datetime.utcnow(), db.DATE)).all()

因为对sqlalchemy不是太了解,就在网上找了上面的筛选方法,但是还是没法过滤掉除今天以外的数据。这个真的头大,于是又找了其他方法:

import datetime
from sqlalchemy import extract


today = datetime.datetime.utcnow()
users= User.query.filter(extract('year', User.create_time) == today.year,
                                   extract('month', User.create_time) == today.month,
                                   extract('day', User.create_time) == today.day).all()

完美解决。不知道是不是因为数据库的原因,我用的sqlite3,下面的方法可以,上面的不行,下次再用mysql试一下,先记录一下。

你可能感兴趣的:(flask)