flask sqlalchemy设置多条件模糊查询以及按时间段查询

NO.1
设置多条件查询

查询多个条件筛选的结果,且允许为空的数据返回

如筛选是上班族且同时年龄为xxx的用户,也可以只查询上班族的用户,年龄为空时返回符合条件的所有年龄段的数据

NO.2
模糊查询

搜索关键字

如通过手机号或者姓名筛选用户

搜索132等前缀或者后四位,搜索名字中的姓等,都可以匹配到用户

NO.3
按时间段查询

设置要查询的起始时间和结束事件

如今日的00:00:00凌晨到今天晚上23:59:59半夜,也就是今天一整天

NO.4
代码示例

引入方法

# 引入多条件查询
from sqlalchemy import and_

使用Model,这里就不展开了,需要预先定义好模型

设置查询条件

info_logs_list = InfoLog.query.filter(
            and_(InfoLog.event_name.like("%" + event_name + "%") if event_name is not None else '',
                 InfoLog.event_data.like("%" + event_data + "%") if event_data is not None else '',
                 InfoLog.conf_data.like("%" + conf_data + "%") if conf_data is not None else '',
                 InfoLog.remark.like("%" + remark + "%") if remark is not None else '',
                 InfoLog.create_time >= start_time,
                 InfoLog.create_time < end_time,
                 )
        ).all()

InfoLog为模型Model

event_name,event_data,conf_data,remark为要查询的数据条件

create_time,end_time为时间段

NO.5
Tips

当字段为None时按字符串查询,此时模型默认设置字段为空字符串

可按自己的需求添加或者减少要查询的字段

END.