
之前学习flask创建数据模型的时候,经常会遇到relationship,外键关联, backref等字眼,由于对这方面知识不是特别熟悉, 所以极大的加深了理解难度, 虽然网上也有相关的表关联的案例,但是对于理解方面没有做过多的说明, 在此,通过学习按照自己的理解进行总结,也希望自己有所加深理解,通过也可以给跟我一样脑袋回路长的朋友一点方向
模型创建
对于日常Flask建表,都是通过建立相应的模型类,进行表 *** 作,见eg:
上面就是一个普通的见表 *** 作, tablename 是表示当前表名称,id, name为表字段,至于Integer, String则是对应的属性
对于这个大家很好理解
外键关联
可是我们经常看到的别人使用的外键关联是如何在模型类中体现的呢?
对于一般的关联, 可以通过如上所示中的ForeignKey和relationship来进行处理
那么这两个如何方便理解呢?
总的来说, relationship这个聚合了两个功能
1.filter() 把过滤器添加到原查询上,返回一个新查询2.filter_by() 把等值过滤器添加到原查询上,返回一个新查询
3.limit 使用指定的值限定原查询返回的结果
4.offset() 偏移原查询返回的结果,返回一个新查询
5.order_by()根据指定条件对原查询结果进行排序,返回一个新查询
6.group_by()根据指定条件对原查询结果进行分组,返回一个新查询
1.all() 以列表形式返回查询的所有结果
2.first() 返回查询的第一个结果,如果未查到,返回None
3.first_or_404()返回查询的第一个结果,如果未查到,返回404
4.get() 返回指定主键对应的行,如不存在,返回None
5.get_or_404() 返回指定主键对应的行,如不存在,返回404
6.count() 返回查询结果的数量
7.paginate()返回一个Paginate对象,它包含指定范围内的结果
-pages一共多少页
-page当前页
-has_prev上一页
-has_next下一页
-iter_pages() 所有页数
-per_page 多少条数据
返回名字等于xiaobao的所有人
*关系属性是 sqlalchemy 封装的一套查询关联数据的语法, 其目的为 让开发者使用 面向对象的形式 方便快捷的获取关联数据
*关系属性的 本质仍是外键
*关系属性使用步骤:
定义关系属性
外键字段设置外键参数
通过关系属性获取关联数据
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)