• ORM SQLAlchemy 表于表的关系


    1表与表之间三种关系

    1.1 一对一关系

    举例: 一个丈夫对应一个妻子,一个妻子对应一个丈夫

    1.2 一对多关系

    举例:一个人可以拥有多辆汽车,要求查询某个人拥有的所有车辆

    分析:这种情况其实也可以采用 一张表,但因为一个人可以拥有多辆汽车,如果采用一张表,会造成冗余信息过多。好的设计方式是,人和车辆分别单独建表,那么如何将两个表关联呢?有个巧妙的方法,在车辆的表中加个外键字段(人的编号)即可。

    1.3 多对多关系

    例如:学生选课,一个学生可以选修多门课程,每门课程可供多个学生选择。 
    分析:这种方式可以按照类似一对多方式建表,但冗余信息太多,好的方式是实体和关系分离并单独建表,实体表为学生表和课程表,关系表为选修表,其中关系表采用联合主键的方式(由学生表主键和课程表主键组成)建表。

    2 SQLAlchemy 表关系使用

    2.1 一对多

    比如一个父亲可以有多个孩子,

    class Parent(Base):
        __tablename__ = 'parent'
        id = Column(Integer, primary_key=True)
        children = relationship("Child")
    
    class Child(Base):
        __tablename__ = 'child'
        id = Column(Integer, primary_key=True)
        parent_id = Column(Integer, ForeignKey('parent.id'))

    一对多要建立双向关系
    class Parent(Base):
        __tablename__ = 'parent'
        id = Column(Integer, primary_key=True)
        children = relationship("Child", back_populates="parent")
    
    class Child(Base):
        __tablename__ = 'child'
        id = Column(Integer, primary_key=True)
        parent_id = Column(Integer, ForeignKey('parent.id'))
        parent = relationship("Parent", back_populates="children")

    2.2 多对一

    比如一个父亲可以有多个孩子,



  • 相关阅读:
    机器学习项目流程(二)探索并可视化数据
    机器学习项目流程(一)初探数据集
    数据类型.md
    keepalived.md
    LVS.md
    tomcat多实例.md
    LANMP常用配置.md
    php-fpm配置参数.md
    Nginx学习.md
    Redis.md
  • 原文地址:https://www.cnblogs.com/sysnap/p/6479649.html
Copyright © 2020-2023  润新知