我应该使用 flask sqlalchemy 多对多关系吗?
Should I use flask sqlalchemy many-to-many relationship?
我正在尝试设计我的数据库,但它没有按照我想要的方式运行。
好吧,我认为这里没有 table markdown,我只有我的数据库 table 和下面的列:
Student: id, fname, lname
Course: id, code, section, name, room, period
假设所有行在 Student
和 Course
table 中都是唯一的。
我如何设计我的数据库,以便当我查询一个学生时,它会 return 我该学生选修的所有课程,反之亦然,当我查询一门课程时,它会 return 我所有的学生那门课。
我正在使用 Flask 和 SQLAlchemy,但不知道在这种情况下是否应该使用多对多?
是的。你有很多学生和很多课程,课程可以有很多学生,一个学生可以有很多课程。
要进行多对多操作,您需要一个连接或关联 table,其中的列类似于:
id | course_id | student_id
---------------------------
1 | 1 | 1
2 | 1 | 2
3 | 2 | 1
4 | 2 | 3
然后,在您的模型中,您可以使用 SQLalchemy 的关系函数来使用它:
class Classes(Base):
students = relationship("Students", secondary=junction_table)
class Students(Base):
classes = relationship("Classes", secondary=junction_table)
junction_table = Table('enrollment', Base.metadata,
Column('class_id', Integer, ForeignKey('classes.id')),
Column('student_id', Integer, ForeignKey('students.id')),
)
正确设置多对多比较棘手,但希望这足以帮助您入门。
相关文档:
http://docs.sqlalchemy.org/en/rel_0_9/orm/basic_relationships.html#many-to-many
我正在尝试设计我的数据库,但它没有按照我想要的方式运行。
好吧,我认为这里没有 table markdown,我只有我的数据库 table 和下面的列:
Student: id, fname, lname
Course: id, code, section, name, room, period
假设所有行在 Student
和 Course
table 中都是唯一的。
我如何设计我的数据库,以便当我查询一个学生时,它会 return 我该学生选修的所有课程,反之亦然,当我查询一门课程时,它会 return 我所有的学生那门课。
我正在使用 Flask 和 SQLAlchemy,但不知道在这种情况下是否应该使用多对多?
是的。你有很多学生和很多课程,课程可以有很多学生,一个学生可以有很多课程。
要进行多对多操作,您需要一个连接或关联 table,其中的列类似于:
id | course_id | student_id
---------------------------
1 | 1 | 1
2 | 1 | 2
3 | 2 | 1
4 | 2 | 3
然后,在您的模型中,您可以使用 SQLalchemy 的关系函数来使用它:
class Classes(Base):
students = relationship("Students", secondary=junction_table)
class Students(Base):
classes = relationship("Classes", secondary=junction_table)
junction_table = Table('enrollment', Base.metadata,
Column('class_id', Integer, ForeignKey('classes.id')),
Column('student_id', Integer, ForeignKey('students.id')),
)
正确设置多对多比较棘手,但希望这足以帮助您入门。
相关文档:
http://docs.sqlalchemy.org/en/rel_0_9/orm/basic_relationships.html#many-to-many