Python全栈 Web(Flask框架、多表关联)

简介: Flask、Python、Django、框架、服务器、客户端、浏览器、交互、WEB、Python前端、CSS、JAVA、HTML、H5、PHP、JavaScript、JQuery、分布式开发
关系映射:
一对多
语法:
1."多"实体中
外键列名=db.Column(db.Integer,db.ForeignKey('主表.主键'))
2."一"实体中 
增加反向引用关系
属性名=db.relationship('多表实体类名',关系选项)
常用的关系选项:
选项名                        说明
backref                     在关系的另一个模型中添加反向引用

lazy                           指定如何加载相关记录
                                  select : 首次访问时加载
                  immediate : 源对象加载后立马加载关联数据
                  subquery : 立即加载,但使用子查询
                  noload : 永不加载
                  dynamic : 不加载记录,但提供加载记录的查询

uselist 如果设置为False,则不使用列表,使用标量
secondary                指定多对多关系中关联表的名字

class Course(db.Model):
    __tablename__ = "course"
    id = db.Column(db.Integer,primary_key=True)
    cname = db.Column(db.String(30))
    #反向引用:返回与当前课程相关的teacher列表
    #backref:定义反向关系,本质上会向Teacher实体中增加一个course属性.
    # 该属性可替代course_id来访问Course模型.此时获得到的是模型对象,而不是外键值
    teachers=db.relationship('Teacher',backref='course',lazy='dynamic')

    def __init__(self,cname):
        self.cname = cname

    def __repr__(self):
        return "<Course %r>" % self.cname

class Teacher(db.Model):
    __tablename__='teacher'
    id = db.Column(db.Integer,primary_key=True)
    tname = db.Column(db.String(30))
    tage = db.Column(db.Integer)

    # 增加一列 : course_id,外键列,要引用自主键表(course)的主键列(id)
    course_id = db.Column(db.Integer,db.ForeignKey('course.id'))

    def __init__(self,tname,tage):
        self.tname = tname
        self.tage = tage

    def __repr__(self):
        return "<Teacher %r>" % self.tname


一对一
A表中的一条记录只能与B表中的一条记录相关联
B表中的一条记录只能与A表中的一条记录相关联

class Teacher(db.Model):
    __tablename__='teacher'
    id = db.Column(db.Integer,primary_key=True)
    tname = db.Column(db.String(30))
    tage = db.Column(db.Integer)

    #增加反向引用,与 Wife 实体类做一对一引用.允许在Teacher中得
    # 到一个Wife的信息.同时,在Wife中也能的到一个Teacher的信息
    # uselist=False , 查询出来的是一个对象,而不是一个列表
    wife = db.relationship('Wife',backref='teacher',uselist=False)

    def __init__(self,tname,tage):
        self.tname = tname
        self.tage = tage

    def __repr__(self):
        return "<Teacher %r>" % self.tname

class Wife(db.Model):
    __tablename__ = 'wife'
    id = db.Column(db.Integer,primary_key=True)
    wname = db.Column(db.String(30))
    wage = db.Column(db.Integer)
    #增加一个列:表示引用自teacher表的主键
    teacher_id = db.Column(db.Integer,db.ForeignKey('teacher.id'))

    def __init__(self,wname,wage):
        self.wage = wage
        self.wname = wname

    def __repr__(self):
        return "<Wife %r>" % self.wname


多对多
A表中的一条数据可以与B表中的任意多条数据相关联
B表中的一条数据可以与A表中的任意多条数据相关联

多对多的实现:
使用第三张表来关联(并不需要实体类)
创建第三张表
student_course = db.Table(
"student_course",  # 在数据库中的表名
db.Column("id", db.Integer, primary_key=True),
db.Column("student_id", db.Integer, db.ForeignKey("student.id")),
db.Column("course_id", db.Integer, db.ForeignKey("course.id"))
)

student_course = db.Table(
    'student_course',
    db.Column('id',db.Integer,primary_key=True),
    db.Column('student_id',db.Integer,db.ForeignKey('student.id')),
    db.Column('couse_id',db.Integer,db.ForeignKey('course.id'))
)


相关文章
|
28天前
|
安全 测试技术 网络安全
如何在Python Web开发中进行安全测试?
如何在Python Web开发中进行安全测试?
|
28天前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
33 4
|
28天前
|
存储 监控 安全
如何在Python Web开发中确保应用的安全性?
如何在Python Web开发中确保应用的安全性?
|
26天前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
|
26天前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
35 2
|
26天前
|
开发者 Docker Python
从零开始:使用Docker容器化你的Python Web应用
从零开始:使用Docker容器化你的Python Web应用
34 1
|
27天前
|
JSON 前端开发 API
使用Python和Flask构建简易Web API
使用Python和Flask构建简易Web API
|
28天前
|
监控 安全 测试技术
如何在实际项目中应用Python Web开发的安全测试知识?
如何在实际项目中应用Python Web开发的安全测试知识?
28 4
|
28天前
|
中间件 Go API
Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架
本文概述了Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架。
70 1
|
4月前
|
搜索推荐 数据可视化 数据挖掘
基于Python flask框架的招聘数据分析推荐系统,有数据推荐和可视化功能
本文介绍了一个基于Python Flask框架的招聘数据分析推荐系统,该系统具备用户登录注册、数据库连接查询、首页推荐、职位与城市分析、公司性质分析、职位需求分析、用户信息管理以及数据可视化等功能,旨在提高求职者的就业效率和满意度,同时为企业提供人才匹配和招聘效果评估手段。
124 0
基于Python flask框架的招聘数据分析推荐系统,有数据推荐和可视化功能
下一篇
DataWorks