一.FLASK-SQLALCHEMY - 插入
db.session.add(Models)
db.session.commit()
二.FLASK-SQLALCHEMY - 查询
①.基于 db.session 进行查询
1.db.session.query() 会返回一个Query对象,类型为BaseQuery,包含了指定实体类对应的表中所有的数据.
该函数也可以接收多个参数,参数表示的是要查询哪个实体
2.查询执行函数
目的: 在查询的基础上得到最终想要的结果
语法: db.session.query(...).查询执行函数()
| 函数 | 说明 |
|---|---|
| all() | 以列表的方式返回查询的所有结果 |
| first() | 返回查询中的第一个结果,如果没有结果,则返回None |
| first_or_404() | 返回查询中的第一个结果,如果没有结果,终止并返回404error |
| count() | 返回查询结果的数量 |
注意: 如果结尾不加查询执行函数,将会返回一个类型为<class 'flask_sqlalchemy.BaseQuery'>的对象,打印出来是响应查询的sql语句
3.查询过滤器函数
作用: 在查询的基础上,筛选部分列出来
语法: db.session.query(...).过滤器函数().查询执行函数()
过滤器函数:
| 函数 | 说明 |
|---|---|
| filter() | 按指定条件进行过滤(多表,单标,定值,不定值) |
| filter_by() | 按等值条件进行过滤 |
| limit() | 按限制行数获取 |
| order_by() | 根据指定条件进行排序 |
| group_by() | 根据指定条件进行分组 |
详解:
A) filter()
- 查询年龄 大于30 且 id大于5 的Users 的信息
db.session.query(Users).filter(Users.age>30,Users.id>5).all()
注意: 条件必须由 模型类.属性 来组成
'且'操作用filter() 和 filter_by()都可.
- 查询年龄 大于30 或者 id大于5 的Users 的信息,或操作需要借助or_()函数
db.session.query(Users).filter(or_(Users.age>30,Users.id>5)).all()
'或'操作只能用filter().
查询id 等于 5 的Users 的信息
注意: 等值判断必须使用 ==
db.session.query(Users).filter(Users.id==5).first()
或
db.session.query(Users).filter_by(id=5).first()
注意:不需要Users.id=5查询email 中包含字符 'w' 的users 信息 - 模糊查询 like
db.session.query(Users).filter(Users.email.like('%w%')).all()
或
查询id在[1,2,3]之间的Users 的信息
db.session.query(Users).filter(Users.id.in_([1,2,3]).all()查询第2到第4条记录
db.session.query(Users).limit(3).offset(1).all()
注意:offset()表示偏移量函数一级排序按照id倒序查询, 二级排序按照年龄升序
db.session.query(Users).order_by("id desc, age asc").all()group_by(),按照age分组
db.session.query(Users).group_by("age")
②.基于 Models 进行查询
Models.query.查询过滤器(条件参数).查询执行函数()
三.FLASK-SQLALCHEMY - 删除 和 修改
①.删除
1) 查询出要删除的实体
user = db.session.query(Users).filter_by(id=5).first()
2) 根据所提供的的删除方法将信息删除
db.session.delete(user)
②.修改
将 id 为 1 的用户的username改为 admin , 年龄改为16
1) 查
user = Users.query.filter_by(id=1).first()
2) 改
user.username = "admin"
user.age = 40
3) 保存
db.session.add(user)