前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flask学习与项目实战6:一对多关系实现

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

作者头像
程序员洲洲
发布2024-06-07 10:16:26
700
发布2024-06-07 10:16:26
举报
文章被收录于专栏:项目文章项目文章

表关系:

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

一、外键

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

代码语言:javascript
复制
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、RESTRICT:父表数据被删除,会阻止删除。默认就是这一项。 2、NO ACTION:在MySQL中,同RESTRICT。 3、CASCADE:级联删除。 4、SET NULL:父表数据被删除,子表数据会设置为NULL。

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

使用relationship实现表关系

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

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

同时注意使用relationship的时候,这个表已经设置好了外键的。

写一个函数进行实验上述代码:即把user直接通过author绑定了关系。

使用反向引用代码示例:在这里增加了两篇文章,但是作者是同一个人,所以可以通过user.articles查看其下有多少篇文章,这就是为什么articles要加s。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 表关系:
  • 一、外键
    • 未通过relationship绑定关系,直接使用外键
      • 使用relationship实现表关系
      相关产品与服务
      云数据库 MySQL
      腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档