SQLAlchemy批量删除问题
参考文章: SQLAlchemy批量删除问题
问题场景
1 | db.session.query(Article).filter(Article.id.in_(items)).delete() |
删除记录时,默认会尝试删除 session 中符合条件的对象,而 in 操作估计还不支持,于是就出错了。解决办法就是删除时不进行同步,然后再让 session 里的所有实体都过期:
1 | session.query(User).filter(User.id.in_((1, 2, 3))).delete(synchronize_session=False) |
此外,update 操作也有同样的参数,如果后面立刻提交了,那么加上 synchronize_session=False 参数会更快。
SQLAlchemy查询当日数据
参考文章: SQLAlchemy查询当日数据
模型中存在一个时间字段
1 | create_time = db.Column(db.DateTime, nullable=False, default=datetime.now) |
使用ORM查询今天的时间,我们可计算出今天的开始时间和结束时间然后进行比较查询。不过,我们可以直接通过时间判断查询。
1 | Tokens.query.filter( |