在 SQLAlchemy ORM 中,多对多(Many-to-Many)关联关系是一种常见的关系类型,它表示两个表中的行可以相互关联,即一个表中的多行可以与另一个表中的多行相关联。为了实现这种关系,SQLAlchemy 提供了一种机制,通过创建一个额外的关联表(也称为连接表或映射表)来管理这种多对多的关系。
场景示例
假设我们有两个模型:Student
和 Course
。一个学生可以注册多门课程,而一门课程也可以被多个学生注册。这就是一个典型的多对多关系。
实现多对多关系
定义模型
首先,我们需要定义 Student
和 Course
模型,并在它们之间通过 relationship()
定义一个多对多关系。同时,我们还需要定义一个额外的关联表来存储这种关系。
from sqlalchemy import create_engine, Column, Integer, String, ForeignKey
from s