Python flask多对多表的创建及添加数据查询数据

models中建表代码:

#多对多建表
                             #中间表名字
zhongjianbiao  = db.Table('zhongjianbiao',
                                                                      #你需要关联的表名字student
                         db.Column('student_id', db.Integer, db.ForeignKey('student.id')),
                                                                   #你需要关联的表名字:class
                         db.Column('class_id', db.Integer, db.ForeignKey('class.id'))
                         )

class Student(db.Model):
    id = db.Column(db.Integer, primary_key=True,autoincrement=True)
    name = db.Column(db.String(32))
#用学生查询课程时用查询到的学生对象:“学生对象.classe.all()”得到其对应的所有课程
    classe = db.relationship('Class', secondary=zhongjianbiao,
                             backref=db.backref('student', lazy='dynamic'), lazy='dynamic')
#db.backref('student', 中的student用来反向关联,用课程查询其对应的所有学生。用查询到的课程对象.student.all()得到。
#relationship可以放到任意一个类中都行,与之相反。

class Class(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(32))

视图中查询代码:

#定义课程信息格式
cou_info = {
    "coursename": fields.String(attribute="name"),
}
#定义返回json字段格式
cou_fields = {
    "msg": fields.String,
    "status": fields.String,
    "course": fields.Nested(cou_info)
}
class StudentResource(Resource):
#用装饰器应用上边的自定义数据格式
    @marshal_with(cou_fields)
    def get(self):
    #获取到get传过来的学生ID和课程ID
        stuid=request.args.get('stuid')
        stu=Student.query.get(stuid)
    #通过学生对象(stu)查找其对应的所有课程,classe为你在表中建的relationship前的名字
        cous=stu.classe.all()
        #print(cous)
        #print(type(cous))
        return {'status':'200','msg':'success','course':cous}
#添加学生和课程间的关系:如学生1选了课程3添加到关系表中:
    def post(self):
    #拿到form表单传过来的学生ID和课程ID
        stuid=request.form.get('stuid')
        couid=request.form.get('couid')
    #通过ID查到对象
        stu=Student.query.get(stuid)
        cous=Class.query.get(couid)
    #添加学生对象
        db.session.add(stu)
    #添加两者关系到中间表
        stu.classe.append(cous)
        db.session.commit()
        return {'status':'200','msg':'add student successfuly'}
    def put(self):
        pass
    def delete(self):
        pass

添加课程,添加学生同理。。

class ClassResource(Resource):
    def get(self):
        pass
    def post(self):
        name=request.form.get('username')
        classer=Class()
        classer.name=name
        db.session.add(classer)
        db.session.commit()
        return {'status':200,'msg':'add class sucessful'}
    def put(self):
        pass
    def delete(self):
        pass

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.安装Flask和pyecharts 在命令行中输入以下命令: ``` pip install flask pip install pyecharts ``` 2.创建Flask应用程序 在项目文件夹中创建app.py文件,并输入以下代码: ``` from flask import Flask,render_template from pyecharts import options as opts from pyecharts.charts import Bar app = Flask(__name__) @app.route("/") def index(): return render_template('index.html') @app.route('/bar') def get_bar(): bar = Bar() bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]) bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90]) bar.add_yaxis("商家B", [15, 6, 45, 20, 35, 66]) bar.set_global_opts(title_opts=opts.TitleOpts(title="柱状图示例")) return bar.dump_options_with_quotes() if __name__ == '__main__': app.run(debug=True) ``` 这里我们在Flask应用程序中定义了两个路由,一个是首页,一个是柱状图路由,其中柱状图路由返回了一个pyecharts柱状图的JSON数据,这里我们使用了dump_options_with_quotes()方法将pyecharts图对象转换为JSON格式的字符串。 3.创建HTML模板 在项目文件夹中创建templates文件夹,并在其中创建index.html文件,输入以下代码: ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>数据大屏</title> </head> <body> <div id="bar" style="width:600px;height:400px;"></div> <script src="https://cdn.bootcss.com/echarts/4.2.1-rc1/echarts.min.js"></script> <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> <script> $(function () { var myChart = echarts.init(document.getElementById('bar')); $.get('/bar', function (data) { myChart.setOption(JSON.parse(data)); }); }); </script> </body> </html> ``` 这里我们在HTML中定义了一个div元素,用于显示柱状图,同时引入了echarts和jquery库,并使用jquery的get()方法获取柱状图的JSON数据,使用echarts的setOption()方法将JSON数据转换为图。 4.运行应用程序 在命令行中进入项目文件夹,输入以下命令启动应用程序: ``` python app.py ``` 然后在浏览器中输入http://127.0.0.1:5000/,即可看到Flask应用程序的首页,点击柱状图链接,即可看到pyecharts柱状图。如果需要添加其他pyecharts图,只需在Flask应用程序中定义新的路由,返回相应的JSON数据即可。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值