查询记录
那么我们怎么从数据库中查询数据?为此,Flask-SQLAlchemy 在您的 Model 类上提供了 query 属性。当您访问它时,您会得到一个新的所有记录的查询对象。在使用 all()
或者 first()
发起查询之前可以使用方法 filter()
来过滤记录。如果您想要用主键查询的话,也可以使用 get()
。
一、查询 示例
1、查询所有:
模型类.query.all() 等价于 select * from user;
2、有条件的查询:
1)模型类.query.fillter_by(字段名 =值) 等价于 select * from user where 字段名=值;
2)模型类.query.fillter_by(字段名 =值).first() 等价于 select * from user where 字段名=值 limit 1;
1 、模型类.query.fillter_by与 模型类.query.fillter区别
模型类.query.fillter_by(字段名=值) 里面是布尔的条件 这个无法实现复杂查询
模型类.query.fillter(模型类.字段名==值) 里面是布尔的条件 【常用】
2、模型类.query.fillter(模型类.字段名==值使用
a)模型类.query.fillter(模型类.字段名==值) .all() 返回值 —>列表
b)模型类.query.fillter(模型类.字段名==值) .first() 返回值 —>对象
3)模型类.query.fillter(模型类.字段名.endswith(‘z’)).all() 等价于 select * from user where 字段名 like ‘%z’;
4)模型类.query.fillter(模型类.字段名.startswith(‘z’)).all() 等价于 select * from user where 字段名 like ‘z%’;
5)模型类.query.fillter(模型类.字段名.contains(‘z’)).all() 等价于 select * from user where 字段名 like ‘%z%’;
6)模型类.query.fillter(模型类.字段名.like(‘%z%’)).all() 等价于 select * from user where 字段名 like ‘%z%’;
7)模型类.query.fillter(模型类.字段名.in_([‘a’,’b’,’c’])).all() 等价于 select * from user where 字段名 in (‘a’,’b’,’c’);
8)模型类.query.fillter(模型类.字段名.between(开始,结束)).all() 等价于 select * from user where 字段名 between 开始 and 结束;
3、组合查询
需要导入
from sqlalchemy import or_, and_, not_
1)模型类.query.fillter(or_(模型类.字段名.like(‘z%’),模型类.字段名.contains(‘a’))).all() 等价于 select * from user where 字段名 like ‘z%’ or 字段名 like ‘%a%’;
2)模型类.query.fillter(and_(模型类.字段名.like(‘z%’),模型类.字段名 < ‘2021-12-12 00:00:00’)).all() 等价于 select * from user where 字段名 like ‘z%’ and 字段名 < ‘2021-12-12 00:00:00’;
修改 < 为 it
模型类.query.fillter(and_(模型类.字段名.like(‘z%’),模型类.字段名.lt( ‘2021-12-12 00:00:00’))).all() 等价于 select * from user where 字段名 like ‘z%’ and 字段名 < ‘2021-12-12 00:00:00’;
扩展
gt
= ge(gt equal)
Original: https://blog.csdn.net/legend818/article/details/121973705
Author: 春天的菠菜
Title: flask-17 flask-sqlalchemy查询
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/745177/
转载文章受原作者版权保护。转载请注明原作者出处!