flask-sqlalchemy 高级查询
假设现又一数据库映射类Student,和app.extensions里的db
资源参考:https://www.cnblogs.com/wen-kang/p/10885720.html
- 查询第一条记录:
db.session.query(Student).first()
- 查询并排序:
db.session.query(Student).order_by(Student.age,排序方式()).all()
排序字段可变,排序方式包括desc()、asc()
- 多列排序:
db.session.query(Student).order_by(排序字段1,排序字段2).all()
排序字段写法同上
- 指定字段条件查询:
db.session.query(Student).filter(Student.name==’xiaoming’).all()
也可写成:
db.session.query(Student).filter_by(name=’xiaoming’).all()
条件内容可变,另filter__by()里的变量为数据库字段名
- 多条件查询(and or)
and:db.session.query(Student).filter(db.and_(条件1,条件2)).all()
or:db.session.query(Student).filter(db.or_(条件1,条件2)).all()
- 指定别名:
r1=db.session.query(Student).filter(Student.fullname.label(‘name‘)).first()
- 使用别名:
print(r1.name) # 原名为fullname
- 查询指定数据列:
db.session.query(Student.fullname).all()
- 字符串匹配方式筛选条件
db.session.query(Student).filter(db.text(“age>:age”)).params(age=18).all()
- 分组查询:
db.session.query(
Student.sex,
db.func.avg(Student.age)
).group_by(Student.sex).all()
以上是查询班级各性别平均年龄,db.func.方法()包括max,min,sum,avg等。