zoukankan      html  css  js  c++  java
  • Flask 入门 (十一)

    上篇文章讲的是一对多,这篇文章应该说多对多了

    但是多对多无法用两张表来实现,因为外键......,你懂,哈哈哈!,所以中间需要加一张表来实现

    承接上文,修改main.py中的代码如下:

    #encoding:utf-8
    from flask_sqlalchemy import SQLAlchemy
    from flask import Flask
     
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI']='mysql+pymysql://root:005@127.0.0.1:3306/data'
    app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=True
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=False
    app.config['JSON_AS_ASCII']=False

    db = SQLAlchemy(app)
    db = SQLAlchemy(use_native_unicode='utf8')

    Student_Teacher=db.Table(

            'Student_Teacher',
            db.Column('tea_id',db.Integer,db.ForeignKey('tea.id'),primary_key=True),
            db.Column('stu_id',db.Integer,db.ForeignKey('stu.id'),primary_key=True)
    )

    class Student(db.Model):
        __tablename__='stu'
        id=db.Column(db.Integer,primary_key=True,autoincrement=True)
        name=db.Column(db.String(20),nullable=False)

        
    class Teacher(db.Model):
        __tablename__='tea'
        id=db.Column(db.Integer,primary_key=True,autoincrement=True)
        name=db.Column(db.String(20),nullable=False)
        students=db.relationship('Student',secondary=Student_Teacher,backref=db.backref('mytea'))

        
    @app.route('/')
    def index():
        db.create_all()
        return '欢迎登录'

    @app.route('/addinfo/')
    def addinfo():
        s1=Student(name='s1')
        s2=Student(name='s2')
        s3=Student(name='s3')
        t1=Teacher(name='t1')
        t2=Teacher(name='t2')
        t3=Teacher(name='t3')

        t1.students.append(s2)
        t1.students.append(s3)

        t2.students.append(s1)
        t2.students.append(s3)

        t3.students.append(s1)
        t3.students.append(s2)

        db.session.add(t1)
        db.session.add(t2)
        db.session.add(t3)
        db.session.add(s1)
        db.session.add(s2)
        db.session.add(s3)
        db.session.commit()
        
        return '添加成功!'

    @app.route('/del/<tea_name>/<stu_name>/')
    def delnfo(tea_name,stu_name):
        t = Teacher.query.filter(Teacher.name==tea_name).first()
        s = Student.query.filter(Student.name==stu_name).first()
        t.students.remove(s)
        db.session.commit()

        return '删除成功!'

    @app.route('/find_stu/<tea_name>/')
    def find_stu(tea_name):
        tea_temp=Teacher.query.filter(Teacher.name==tea_name).first()
        stus=tea_temp.students
        allname=''
        for stu_temp in stus:
            allname=allname+stu_temp.name+'  '
        return allname

    @app.route('/find_tea/<stu_name>/')
    def find_tea(stu_name):
        stu_temp=Student.query.filter(Student.name==stu_name).first()
        teas=stu_temp.mytea
        allname=''
        for tea_temp in teas:
            allname=allname+tea_temp.name+'  '
        return allname
        

    if __name__=='__main__':
        app.run(debug=True)

    打开浏览器,执行

    127.0.0.1:5000

    回车

    127.0.0.1:5000/addinfo/

    回车

    127.0.0.1:5000/find_stu/t1

    输入

    127.0.0.1:5000/find_tea/s1

    想看大神详细的讲解,请看:

    https://blog.csdn.net/ying847782627/article/details/51333090

    https://blog.csdn.net/qq_28877125/article/details/77664575

  • 相关阅读:
    解决:Could not resolve archetype org.apache.maven.archetypes
    Spring MVC配置MyBatis输出SQL
    Spring集成MyBatis 通用Mapper以及 pagehelper分页插件
    关于SpringMVC或Struts2接受参数接收不到的原因
    配置quartz启动时就执行一次
    ajaxFileUpload进行文件上传时,总是进入error
    spring mvc注入配置文件里的属性
    java中将一个文件夹下所有的文件压缩成一个文件
    flume failed to start agent because dependencies were not found in classpath
    ubuntu不能安装pip unable to install pip in unbuntu
  • 原文地址:https://www.cnblogs.com/viplanyue/p/12700684.html
Copyright © 2011-2022 走看看