Flask学习与项目实战6:一对多关系实现

举报
bdi洲 发表于 2022/05/19 23:27:01 2022/05/19
【摘要】 表关系: 一对一、一对多、多对多关系 一、外键 SQLAlchemy中可以使用外键。通过ForeignKey类来实现,并且可以指定表的外键约束。代码如下: class Article(Base):...

表关系:

一对一、一对多、多对多关系

一、外键

SQLAlchemy中可以使用外键。通过ForeignKey类来实现,并且可以指定表的外键约束。代码如下:

class Article(Base):
    __tablename__ = 'article'
    id = Column(Integer,primary_key=True,autoincrement=True)
    title = Column(String(50),nullable=False)
    content = Column(Text,nullable=False)
    uid = Column(Integer,ForeignKey('user.id'))

    def __repr__(self):
        return "<Article(title:%s)>" % self.title

class User(Base):
    __tablename__ = 'user'
    id = Column(Integer,primary_key=True,autoincrement=True)
    username = Column(String(50),nullable=False)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

其中外键约束有:

1、RESTRICT:父表数据被删除,会阻止删除。默认就是这一项。
2、NO ACTION:在MySQL中,同RESTRICT。
3、CASCADE:级联删除。
4、SET NULL:父表数据被删除,子表数据会设置为NULL。

未通过relationship绑定关系,直接使用外键

在这里插入图片描述

使用relationship实现表关系

backref : 反向引用,第二个参数:代表对方访问我的时候的字段名称

截图中的articles是因为 通过用户可以拿到许多文章 即 一对多关系。

在这里插入图片描述
同时注意使用relationship的时候,这个表已经设置好了外键的。

在这里插入图片描述
写一个函数进行实验上述代码:即把user直接通过author绑定了关系。
在这里插入图片描述
使用反向引用代码示例:在这里增加了两篇文章,但是作者是同一个人,所以可以通过user.articles查看其下有多少篇文章,这就是为什么articles要加s。
在这里插入图片描述

文章来源: blog.csdn.net,作者:洲的学习笔记,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_51484460/article/details/122747769

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。