SQLAlchemy 数据库操作

一.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() 返回查询结果的数量

注意: 如果结尾不加查询执行函数,将会返回一个类型为的对象,打印出来是响应查询的sql语句

3.查询过滤器函数

作用: 在查询的基础上,筛选部分列出来
语法: db.session.query(...).过滤器函数().查询执行函数()
过滤器函数:

函数 说明
filter() 按指定条件进行过滤(多表,单标,定值,不定值)
filter_by() 按等值条件进行过滤
limit() 按限制行数获取
order_by() 根据指定条件进行排序
group_by() 根据指定条件进行分组

详解:

A) filter()
  1. 查询年龄 大于30 且 id大于5 的Users 的信息
    db.session.query(Users).filter(Users.age>30,Users.id>5).all()
    注意: 条件必须由 模型类.属性 来组成

'且'操作用filter() 和 filter_by()都可.

  1. 查询年龄 大于30 或者 id大于5 的Users 的信息,或操作需要借助or_()函数
    db.session.query(Users).filter(or_(Users.age>30,Users.id>5)).all()

'或'操作只能用filter().

  1. 查询id 等于 5 的Users 的信息
    注意: 等值判断必须使用 ==
    db.session.query(Users).filter(Users.id==5).first()

    db.session.query(Users).filter_by(id=5).first()
    注意:不需要Users.id=5

  2. 查询email 中包含字符 'w' 的users 信息 - 模糊查询 like
    db.session.query(Users).filter(Users.email.like('%w%')).all()

  1. 查询id在[1,2,3]之间的Users 的信息
    db.session.query(Users).filter(Users.id.in_([1,2,3]).all()

  2. 查询第2到第4条记录
    db.session.query(Users).limit(3).offset(1).all()
    注意: offset()表示偏移量函数

  3. 一级排序按照id倒序查询, 二级排序按照年龄升序
    db.session.query(Users).order_by("id desc, age asc").all()

  4. 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)

你可能感兴趣的:(SQLAlchemy 数据库操作)