flask定义数据库关系(一对一)(代码片段)

xiaxiaoxu xiaxiaoxu     2022-12-03     585

关键词:

一对一

我们将使用国家和首都来演示一对一关系:每个国家只有一个首都。反过来,一个城市也只能作为一个国家的首都。一对一关系如下:

技术图片

 

在示例程序中,Country类表示国家,Capital类表示首都。建立一对一关系后,我们将在Country类中创建一个标量关系capital,调用它会获取单个Capital对象,我们还在Capital类中创建一个标量关系属性country,调用它会获取单个的Country对象。

 

一对一关系实际上是通过建立双向关系的一对多关系的基础上转化而来。我们要确保关系两侧的关系属性都是标量属性,都只返回单个值,所以要在定义集合属性的关系函数中将uselist参数设为False,这时一对多关系将被转换为一对一关系。下面代码基于建立双向关系的一对多关系实现了一对一关系。

app.py:建立一对一关系

 

class Country(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    name = db.Column(db.String(30), unique = True)
    capital = db.relationship(Capital, uselist = False)

    def __repr__(self):
        return <Country %r> % self.name

class Capital(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    name = db.Column(db.String(30), unique = True)
    country_id = db.Column(db.Integer, db.ForeignKey(country.id))
    country = db.relationship(Country)

    def __repr__(self):
        return <Capital %r> % self.name

 

 

“多”这一侧本身就是标量关系属性,不用做任何改动(有外键的是“多”这一侧),而“一”这一侧的集合关系属性,通过将uselist设为False后,将仅返回对应的单个记录,而且无法再使用列表语义操作

flask学习-77.flask-sqlalchemy一对一关系增删改查(代码片段)

前言SQLAlchemy连接到关系型数据库,关系型数据最擅长的东西就是关系。一对一模型设计有个Student记录学生基本信息,Contact表记录学生联系方式,Student和Contact是一对一关系。classStudent(db.Model):__tablename__='student&#... 查看详情

flask框架从入门到精通之模型关系(十七)(代码片段)

知识点:1、模型关系参照一、概况在数据库中,我们知道数据关系大概有如下几种:一对一、一对多、多对多、自关联等。我们模型已经描述过了一对多,那么下面我们在用模型把其它关系也写出来。关系一对一... 查看详情

flask框架从入门到精通之模型关系(十七)(代码片段)

知识点:1、模型关系参照一、概况在数据库中,我们知道数据关系大概有如下几种:一对一、一对多、多对多、自关联等。我们模型已经描述过了一对多,那么下面我们在用模型把其它关系也写出来。关系一对一... 查看详情

flask学习-84.flask-sqlalchemy一对多关系级联删除(代码片段)

前言一对多关系,当删除主表数据的时候,关联表数据一起删除掉一对多模型设计classPerson(db.Model):id=db.Column(db.Integer,primary_key=True)name=db.Column(db.String(50))addresses=db.relationship('Address' 查看详情

flask学习-84.flask-sqlalchemy一对多关系级联删除(代码片段)

前言一对多关系,当删除主表数据的时候,关联表数据一起删除掉一对多模型设计classPerson(db.Model):id=db.Column(db.Integer,primary_key=True)name=db.Column(db.String(50))addresses=db.relationship('Address' 查看详情

flask学习-78.flask-sqlalchemy一对多关系(代码片段)

前言一个人有多个收件地址,这就是一对多关系一对多(one-to-many)关系关系使用relationship()函数表示。然而外键必须用类sqlalchemy.schema.ForeignKey来单独声明:classPerson(db.Model):id=db.Column(db.Integer,primary_key=True)name=db.Column 查看详情

flask中一对一,一对多以及多对多关系的设定(代码片段)

一对多关系:classGrade(db.Model):id=db.Column(db.Integer,primary_key=True)name=db.Column(db.String(20),nullable=False)num=db.Column(db.Integer,default=0)time=db.Column(db.String(20),default=‘2018-01-01‘)stu 查看详情

深入浅出flask(49):flask_sqlalchemy的创建一对多的关系表

在我们建立数据库的模型时,使用得最多的就是一对多的关系,比如一个家庭有多个成员,一个学校有多个学生,一个学生有多门成绩。要表示这种关系,往往建立两个表,一个表用来表示一方的数据,另外一个表表示多方的数... 查看详情

flask:06-一首歌的时间掌握flask数据模型(02)(代码片段)

...udent)需要添加反向引用多:文章(Article)需要添加外键关联一对一一:学生(Student),主表需要添加反向引用,在一对多的情况下多指定属性userlist=False即可一:详情(Profile),次表需要添加外键关联多对多多:学生(Student)需要添加反... 查看详情

flask--(一对多)模型渲染表单数据(代码片段)

...型建立一一对多模型:多表添加外键,建立两张表之间的关系一表关联多表的属性,可以方便快速访问多表的数据模板一层循环渲染一表数据,二层循环渲染多表的数据代码展示:fromflaskimportFlask#Flask参数,可以配置静态文件路... 查看详情

sqlalchemy:与多个表的非平凡的一对一关系(代码片段)

我正在努力为我的Flask应用程序创建数据库模型。让我们考虑一下我的产品类型很少,并且由于我的应用程序的性质,我希望每个产品都有单独的表,同时将通用属性保存在公共表中:例:产品表idtypenameprice1'motorcycle''Harley'10000.0... 查看详情

flask数据库多对多关系

 数据库使用关系建立记录之间的联系。其中,一对多关系是最常用的关系类型,它把一个记录和一组相关的记录联系在一起。实现这种关系时,要在“多”这一侧加入一个外键,指向“一”这一侧联接的记录。大部分的其他... 查看详情

flask中常见的关系模型定义

flask中常见的关系模型定义一对多应用场景:角色与所属于该角色的用户(角色表与多用户表)[Python] 纯文本查看 复制代码?01020304050607080910classRole(db.Model):    __tablename__=‘roles‘    id=db.Column(db. 查看详情

flask之数据库设置(代码片段)

4数据库知识点Flask-SQLALchemy安装连接数据库使用数据库数据库迁移邮件扩展4.1数据库的设置Web应用中普遍使用的是关系模型的数据库,关系型数据库把所有的数据都存储在表中,表用来给应用的实体建模,表的列数是固定的,行... 查看详情

mybatis框架关联映射(代码片段)

...分步查询6.处理一对多查询7.小结1.关联映射概述在关系型数据库中,多表之间存在着三种关联关系,分别为一对一,一对多和多对多,如图一对一的关系:就是在本类中定义对方类型的对象,如A类中定义B类类... 查看详情

数据库一对一对多多对多关系(代码片段)

数据库一对一、一对多、多对多关系一、首先给出三种关系的实例一对一关系实例?一个人对应一张身份证,一张身份证对应一个人一对多关系实例?一个公司的部门拥有多个职员,一个职员只能够属于某个部门多对多实例?一本图... 查看详情

实体框架代码优先关系 - 如何定义两个对象之间的关系:两个实体之间的可选一对一

...1-09-2009:27:07【问题描述】:我有一个要求,即我需要链接数据库中的2个实体(使 查看详情

flask学习十一关注着

数据库关系1.1多对多关系添加第三张表(关联表),多对多关系可以分解成原表和关联表之间的两个一对多的关系多对多仍然使用db.relationship()方法定义,但是secondary参数必须设定为关联表,多对多关系可以在任何一个表中定义... 查看详情