flask中条件查询filter和filter_by的用法

filter和filter_by区别:接收的参数类型不一样

filter方法的使用示例如下:

admins = Admin.query.filter(Admin.id==1)
print(admins)

打印出的结果是sql语句:
SELECT `admin`.id AS admin_id, `admin`.name AS admin_name, `admin`.pwd AS admin_pwd, `admin`.is_super AS admin_is_super, `admin`.role_id AS admin_role_id, `admin`.addtime AS admin_addtime 
FROM `admin` 
WHERE `admin`.id = %(id_1)s


admins = Admin.query.filter(Admin.id==1).all()
print(type(admins))
打印出的结果为:<class 'list'>
所以后面跟all()方法的查询语句返回值是一个列表


admins = Admin.query.filter(Admin.id==1).first()
print(type(admins))
打印出的结果为:<class 'app.models.Admin'>
所以后面跟first()方法的查询语句返回值是模型类Admin的实例对象


注意:表示相等的比较操作符是==,而且要明确的指出id是哪个模型类的字段
查询出id值大于90的所有用户
admins=Admin.query.filter(User.id>90).all()


filter的功能更强大,支持or_,in_,and_等语法。

filter_by方法的使用示例如下:

admins = Admin.query.filter_by(id=1)
print(admins)

打印出的结果是sql语句:
SELECT `admin`.id AS admin_id, `admin`.name AS admin_name, `admin`.pwd AS admin_pwd, `admin`.is_super AS admin_is_super, `admin`.role_id AS admin_role_id, `admin`.addtime AS admin_addtime 
FROM `admin` 
WHERE `admin`.id = %(id_1)s

admins = Admin.query.filter_by(id=1).all()
print(type(admins))
打印出的结果为:<class 'list'>
所以后面跟all()方法的查询语句返回值是一个列表

admins = Admin.query.filter_by(id=1).first()
print(type(admins))
打印出的结果为:<class 'app.models.Admin'>
所以后面跟first()方法的查询语句返回值是模型类Admin的实例对象


注意:filter_by接受的参数是关键字参数,只支持一般的列查询,不支持比较运算符

总结:

cls.query.filter(类名.属性名 条件操作符 条件) 过滤特定条件,返回的是query对象
cls.query.filter_by(关键字参数对) 单条件查询,条件必须关键字参数,而且and连接

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值