Relationships是一种在数据库中表示实体之间的关系的方法。它可以帮助我们将多个表联系起来,使得数据能够更好地进行存储和管理。
1. 一对一关系:一对一关系是指一个实体只能与另一个实体有一个关系,例如一个人只能有一个配偶。代码示例:
class Person(Base):
__tablename__ = 'person'
id = Column(Integer, primary_key=True)
spouse_id = Column(Integer, ForeignKey('spouse.id'))
spouse = relationship("Spouse", backref="person")
class Spouse(Base):
__tablename__ = 'spouse'
id = Column(Integer, primary_key=True)
2. 一对多关系:一对多关系是指一个实体可以与多个实体有关系,例如一个老师可以有多个学生。代码示例:
class Teacher(Base):
__tablename__ = 'teacher'
id = Column(Integer, primary_key=True)
students = relationship("Student", backref="teacher")
class Student(Base):
__tablename__ = 'student'
id = Column(Integer, primary_key=True)
teacher_id = Column(Integer, ForeignKey('teacher.id'))
3. 多对多关系:多对多关系是指一个实体可以与多个实体有多个关系,例如一个学生可以有多门课程。代码示例:
class Student(Base):
__tablename__ = 'student'
id = Column(Integer, primary_key=True)
courses = relationship("Course", secondary="student_course", backref="students")
class Course(Base):
__tablename__ = 'course'
id = Column(Integer, primary_key=True)
student_course = Table('student_course', Base.metadata,
Column('student_id', Integer, ForeignKey('student.id')),
Column('course_id', Integer, ForeignKey('course.id'))
)
4. 自引用关系:自引用关系是指一个实体可以与自己有关系,例如一个员工可以有上司。代码示例:
class Employee(Base):
__tablename__ = 'employee'
id = Column(Integer, primary_key=True)
manager_id = Column(Integer, ForeignKey('employee.id'))
manager = relationship("Employee", remote_side=[id])
标签:
评论列表 (0)