数据库的增、删、改通过 db.session 的会话对象,数据库的查询一般通过 模型类名.query() (也可以通过session会话查询)
demo.py(数据库查询):
import User # 导入模型类
# 通过query查询
# 查询所有。 (User是模型类名)
user_list = User.query.all() # 返回列表
# 查询第一个
user1 = User.query.first() # 返回模型类对象。 不存在返回None
# 根据主键id查询
user2 = User.query.get(3)
# 过滤器
# 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()
# 逻辑运算符
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)表示查询所有列
# 聚合函数,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()
# 返回列表中的元素内容取决于查询的列