当前位置: 芃睿知识网 > 建站常见问题

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

看了该文章的用户还看了

Flask SQLAlchemy 调用数据库数据返回到前端html显示问题
Flask SQLAlchemy 调用数据库数据返回到前端html显示问题

这个在我们的web开发中也经常需要调用数据库的数据到前端去显示出来,特别是文章类的,会带有大量的html代码,这个时候展

flask自定义错误页面404,500方法
flask自定义错误页面404,500方法

网上看了很多关于nginx配置错误页面404,500页面的方法,拿到实际flask项目中一个都不能用, 比如最常见的是

flask如何配置访问robots.txt和sitemap.xml
flask如何配置访问robots.txt和sitemap.xml

使用flask把网站做好了,但是为了优化需要添加robots.txt和sitemap.xml文件,将其放入根目录,提示4

python flask 读取文本时不换行怎么办
python flask 读取文本时不换行怎么办

python flask 读取文本时不换行怎么办,接触flask不久,用flask写了一个超级小网站,因为数据太少所以暂

flask如何把数据库里的html格式输出到前端
flask如何把数据库里的html格式输出到前端

只需要在调取标签的后面加上|safe即可将html解析出来了,如果不加将会html的代码直接显示出来。

flask Jinja2迭代Python中的list列表和dict字典
flask Jinja2迭代Python中的list列表和dict字典

经常使用flask Jinja2迭代Python中的list列表和dict字典,总是忘记,记录下

flask 模型中外键查询一对一和多对多如何实现
flask 模型中外键查询一对一和多对多如何实现

在多的一方需要写一个字段并写上db.ForeignKey('grade.id'),参数为一对多的一的一方的主键,这个字段

Flask jinja2模板中if条件语句如何使用
Flask jinja2模板中if条件语句如何使用

if条件判断语句必须放在{% if statement %}中间,并且还必须有结束的标签{% endif %}

flask filter如何实现or的功能
flask filter如何实现or的功能

flask fliter过滤是数据提取的一个很重要的功能,我们都知道and用逗号就可以实现,那么or的功能应该如何实现呢

flask如何关闭csrf验证
flask如何关闭csrf验证

flask本身是没有集成csrf的,所以要使用csrf必须使用from flask_wtf.csrf import CS

发表高见 (请对您的言行负责)
©芃睿知识网 版权所有2021-2022 www.shsongjiang.com