数据库的增、删、改经过 db.session 的会话对象,数据库的查询通常经过 模型类名.query() (也能够经过session会话查询)python
demo.py(数据库查询):sql
import User # 导入模型类 # 经过query查询 # 查询全部。 (User是模型类名) user_list = User.query.all() # 返回列表 # 查询第一个 user1 = User.query.first() # 返回模型类对象。 不存在返回None # 根据主键id查询 user2 = User.query.get(3) # 查询结果的数量 user_count = User.query.count() # 分页查询 paginate_obj = User.query.paginate(page=1, per_page=20, error_out=False) # 第一页,每页20条数据。 默认第一页 # 参数:error_out 设为True表示页数不是int或超过总页数时,会报错,并返回404状态码。默认True # 过滤器 # filter_by过滤器 (精确条件) user_list = User.query.filter_by(name='wang').all() # 条件只能是等号= user = User.query.filter_by(name='wang', age=18).first() # 逗号链接多个条件,是而且的关系。 # filter过滤器 (通用过滤器。模糊查询) user = User.query.filter(User.name=="wang", User.age==18).first() # 条件能够是==、>、<、>=、<=、!= user_list = User.query.filter(User.name.endswith('g')).all() # endswith、startswith、contains # 逻辑运算符 from sqlalchemy import or_, and_, not_ user_list = User.query.filter(or_(User.name!='wang', User.email.endswith('163.com'))).all() # 其余过滤器 user_list = User.query.filter(User.name!="wang").offset(5).limit(5).order_by("-id").all() # order_by("-id")中的-表示降序。flask-sqlalchemy封装的排序方式 user_list = User.query.order_by(User.id.desc()).all() # SQLAlchemy的原生排序方式。(默认升序) # 经过session会话查询。(SQLAlchemy的原始方式。 上面经过query查询的方式是flask-sqlalchemy封装的查询方式) from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy(app) # app是程序实例 user_list = db.session.query(User).all() # 查询全部。 query(User)表示查询全部列 sql = 'select * from tb_user;' users = db.session.execute(sql) # 聚合函数,group_by()分组 from sqlalchemy import func # 导入聚合函数 obj_list = db.session.query(User.name, User.role_id, func.count(User.role_id)).group_by(User.role_id).all() # 返回列表中的元素内容取决于查询的列
分页查询数据库
from xxx import User # 导入模型类 # 分页查询 paginate_obj = User.query.paginate(page=1, per_page=20, error_out=False) # 第一页,每页20条数据。 默认第一页。 # 参数:error_out 设为True表示页数不是int或超过总页数时,会报错,并返回404状态码。 默认True user_list = paginate_obj.items # 获取查询出来的数据。 (error_out设为False,页数不合法时会返回空列表) # 获取总页数 total_page = paginate_obj.pages