mysql延伸
增 (多个)
- db.session.add(stu) 单个
- db.session.add_all(stus) 列表,多个
运算符
filter(模型名.字段.运算符(‘xxx’))
filter(模型名.字段 运算符 值)
- 小于 lt 小于等于 le
- s_age.lt(11)
- 大于 gt 大于等于 le
- 范围 in_
- s_age.in_([11, 13])
- 排序 order_by
- 返回几个 limit(4)
- 跳过几个 offset(3)
- 第一个 first()
- 最后一个 last()
- 并且 add_
- 或者 or_
- 非 not_
- add_(条件)
查询进阶
- sql 语句查询
- sql = ‘查询条件’
- stus = db.session.execute(sql)
- flask语句查询
- 应用运算符查询
filter 和 get 在 flask里的区别
- filter 返回的是列表,就算只有一条数据,也是列表
- get 只能获取主键id,查询并返回一条信息,查不到返回空,不会报错
分页 paginate
定义
- page = int(request.args.get(‘page’,1))
- perpage = int(request.args.get(‘per_page’, 3))
- paginate = Student.query.order_by(‘-s_id’).paginate(page, perpage, error_out=False)
- stus = paginate.items
- return render_template(‘xx.html’, paginate=paginate, stus=stus)
使用
- paginate.pages 总页数
- paginate.page 当前页数
- paginate.prev_num 上一页
- paginate.next_num 下一页
- paginate.iter_pages 页码
- paginate.total所有的数据,多少条
- paginate.has_next 有下一页
- paginate.has_prev 有上一页
模型
- 创建表结构 create_all,只能通过add commit 配合来添加内容
- 注意,两个表分开写时,注意!!拿不准就写在一个models里
一对一
一对多
创建表结构
- 在多的表里创建连接点
- s_g = db.Column(db.Integer, db.ForeignKey(‘grade.g_id’), nullable=True)
- 其中必须是(表名.主键)
- 在一 的表里关联上多的表
- students = db.relationship(‘Student’,backref=’stu’, lazy=True)
- 其中必须是Student,类名。
使用,同django
- stus = grade.students 母表查子表
- grade = stu.stu 子表查母表