一 查询数据
all():查询所有数据,其结果是一个列表,每一个元素都是一个对象
exmples=Exmple.query.all()
条件查询:在这里也称为过滤查询
- 1 filter(对象.属性==值)
exmple= Exmple.query.filter(Exmple.id==1)
- 2 filter_by(属性=值),可以进行遍历
exmple= Exmple.query.filter_by(id=1)
- 3 原生sql查询id=1的数据,结果是一个可以遍历的对象
sql = 'select * from exmplewhere id=1;'
exmple= db.session.execute(sql)
模糊查询
- 语法:filter(模型名.属性.运算符('xxxxx'))
- 运算符:
- contains:包含
- startswith:以什么开始
- endswith:以什么结束
- in_:在范围内
- like:模糊
- gt: 大于
- ge:大于等于
- lt:小于
- le:小于等于
筛选
- offset()
exmple= Exmple.query.offset(3) # 跳过3个数据
- limit()
exmple= Exmple.query.limit(5) # 只查询5条信息
- order_by()
# 按照id降序,升序
exmples= Exmple.query.order_by('id')
exmples= Exmple.query.order_by('-id')
exmples= Exmple.query.order_by(desc('id'))
exmples= Exmple.query.order_by(asc('id'))
exmples= Exmple.query.order_by('id desc')
exmples= Exmple.query.order_by('id asc')
- get()
exmples = Exmple.query.get(1) # 获取id=1的对象,get()默认接收id属性,拿不到值不会报错,返回空
- first()
exmples= Exmple.query.order_by('-s_age').first() # 获取年龄最大的一个
逻辑运算:主要用于多条件查询
- 与 and_
filter(and_(条件),条件…)
- 或 or_
filter(or_(条件),条件…)
- 非 not_
filter(not_(条件),条件…)
注意:
- fliter和filter_by的结果可遍历
- 可以通过对其结果使用all()方法将其转换成一个列表或者first()转换成objects对象。
- all()获得的是列表,列表没有first()方法
- fliter和filter_by有flrst()方法,没有last方法
二 添加数据
1.在Flask中添加数据后需要添加事务和提交事务。事务有以下四个特性:
- 完整性
- 一致性
- 持久性
- 原子性
2.添加数据的步骤: - 将要添加的数据放入缓存
db.session.add(对象)
- 将缓存中的数据提交
db.session.commit()
3.批量添加数据
- add_list()
db.session.add_list(对象列表) # 参数是一个列表
三 修改数据
- 获取到需要修改的对象,通过对象.属性的方式将属性重新赋值,然后使用commit提交事务
Exmple.query.filter_by(条件).update({'属性':'值'})
db.session.commit()
四 删除数据
- 格式
db.session.delete(对象)
db.session.commit()
- 注意:在修改数据(增删改)中如果使用commit()的话,只会修改本地缓存中的数据,数据库中的数据不会更新。必须使用:db.session.commit()