flask基础 多对多 重构 debug restful marshmellow

多对多

创建
  • 相对于django,自己相当于做了完全的工作,三张表都自己来创建

1.多 ,至少有一个主键字段

2.中间表,创建两个外键来关联这两个表的主键

sc = db.Table('sc',
    db.Column('s_id', db.Integer,db.ForeignKey('student.s_id')),
    db.Column('c_id', db.Integer, db.ForeignKey('course.c_id'))
)

3.多,至少有一个主键字段,选取两个表中的任意一个,来写对应的关系,relationshio,相比一对多,多了个secondary,填写中间表的参数

students = db.relationship('Student', secondary=sc, backref='cou')
使用
(1) 查询
    1. stu = Student.query.get(id) 实例化对象
    2. stu.cou
    3. cou = Course.query.get(id)
    4. cou.students
(2)添加数据
    1. sql添加
        * sql = 'insert into sc(s_id,c_id) value (%s, %s);' % (s_id, c_id)
        * db.session.execute(sql)
    2. 普通添加
        * stu = Student.query.get(s_id)
        * cou = Course.query.get(c_id)
        * stu.cou.apppend(cou) / cou.students.append(stu)
        * db.session.add(cou/stu)   add_all()
        * db.session.commit()
 (3)删除数据
    1. 普通删除,不是delete,用remove
        * stu = Student.query.get(s_id)
        * cou = Course.query.get(c_id)
        * stu.cou.remove(cou)
        * db.session.commit()
    2. sql
        * sql = 'delete from sc where s_id =%s and c_id= %s;' % (sid, cid)
        * db.session.execute(sql)
        * db.session.commit()

项目的重构

思想

  1. 把公共的文件统一放到一起,需要的时候直接调用
  2. 规范化

做法

  1. 新建文件夹utils,里面创建App.py,function.py,settings.py
App.py
  1. 初始化app,让其他需要注册的插件在这里和app绑定
  2. 蓝图的绑定
  3. debug的绑定和配置
  4. 数据库的绑定和配置
  5. rest_ful的绑定
  6. marshmallow的绑定
function.py
  1. 公共的方法写在这里,用来呗引用
  2. 数据库连接的国际方法改写为自己适用的方法
settings.py
  1. 基本配置,基础路径,页面模板,静态模板
  2. 数据库的官方格式

debug

作用

  1. 查看历史安装了哪些包
  2. 查看网页加载用时
  3. 查看使用了数据库调用的sql语句
  4. 查看所有的接口

配置

  1. 初始化
  2. 注册
  3. 开启(被动使用)
    • app.debug = True
    • app.config[‘SCRET_KEY’] = ‘secret_key’

rest_ful

作用

  1. 可以很方便的对绑定的表进行增删查改
  2. 但是一个rest_ful只能绑定一个表

配置

  1. 初始化
  2. 注册

使用 views里使用

  1. 定义一个类,继承Resource
  2. 定义方法,定义增删改查方法
  3. 返回数据。此处可以配合marshmellow使用,
    • marshmellow是用来序列化数据,的
class HelloStudent(Resource):
    def get(self, id):
        stu = Student.query.get(id)
        return stumarsh.jsonify(stu) 

marshmellow

配置

  1. 初始化 ma = Marshmallow()
  2. 注册 ma.init_app(app=app)

使用

  1. 定义一个Marshmallow文件,在这里写筛选条件
  2. 用来给restful继承,将数据返回
 class StuMarsh(ma.Schema):
    class Meta:
        # 筛选,修饰
        fields = ('s_name', 's_age')
stumarsh = StuMarsh() 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值