Ric*_*cek 1 python database sqlalchemy flask flask-sqlalchemy
我正在尝试设计我的数据库,但它并没有按照我想要的方式设计.
好吧,我不认为这里有表markdown,我将只有我的数据库表和列:
Student: id, fname, lname
Course: id, code, section, name, room, period
假设所有行在表Student和Course表中都是唯一的.如何设计我的数据库,以便在我查询学生时,它将返回学生所有课程,反之亦然,当我查询课程时,它将返回该课程中的所有学生.
我正在使用Flask和SQLAlchemy,但不知道在这种情况下我是否应该使用多对多?
是.你有很多学生和很多课程,课程可以有很多学生,学生可能有很多课程.
要执行多对多,您需要一个包含以下列的列的联结或关联表:
id | course_id | student_id
---------------------------
1 | 1 | 1
2 | 1 | 2
3 | 2 | 1
4 | 2 | 3
Run Code Online (Sandbox Code Playgroud)
然后,在您的模型中,您可以使用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')),
)
Run Code Online (Sandbox Code Playgroud)
很多人都很难设置正确,但希望这足以让你开始.
相关文档:
http://docs.sqlalchemy.org/en/rel_0_9/orm/basic_relationships.html#many-to-many
| 归档时间: |
|
| 查看次数: |
1097 次 |
| 最近记录: |