当前位置: 知识网 > 建站问题

flask中条件查询filter和filter_by的区别

知识网2021年11月09日 17:15原创

filter和filter_by区别:

cls.query.filter(类名.属性名 条件操作符 条件) 过滤特定条件,返回的是query对象

cls.query.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接受的参数是关键字参数,只支持一般的列查询,不支持比较运算符

本文章网址:https://www.shsongjiang.com/p51/

很赞哦!(5)

发表高见 (请对您的言行负责)

©芃睿知识网 版权所有 2012-2022 www.shsongjiang.com

备案号:赣ICP备2022001527号-1