python - 我应该使用 flask sqlalchemy 多对多关系吗?

标签 python database flask sqlalchemy flask-sqlalchemy

我正在尝试设计我的数据库,但它并没有按照我想要的方式运行。

好吧,我认为这里没有表格 markdown,下面只有我的数据库表格和列:

学生:id, fname, lname

类(class):id、code、section、name、room、period

假设所有行在 StudentCourse 表中都是唯一的。 我如何设计我的数据库,以便当我查询一个学生时,它会返回该学生选修的所有类(class),反之亦然,当我查询一门类(class)时,它会返回该类(class)的所有学生。

我正在使用 Flask 和 SQLAlchemy,但不知道在这种情况下是否应该使用多对多?

最佳答案

是的。你有很多学生和很多类(class),类(class)可以有很多学生,一个学生可以有很多类(class)。

要进行多对多,您需要一个联结表或关联表,其中的列如下所示:

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

关于python - 我应该使用 flask sqlalchemy 多对多关系吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29223010/

相关文章:

python - 为什么我的代码没有结束

python - Bottle框架生成pdf

database - Access 中具有自动编号和日期字段的最大聚合函数

python - 使 Flask-Login 的 login_required 成为默认值的最佳方法

python - 在 PyDev 中使用 virtualenv 运行 Selenium Chrome 时如何解决 "chromedriver executable needs to be in PATH"错误?

database - 如何使用 flutter 更新 firestore 中所有文档的单个字段?

database - 如何在 laravel 4 中将邮件数据从服务提供商传递到 config/mail.php

javascript - 使用 javascript 或 jquery 在 session 中存储 Flask 数据

python - 在两个 flask 服务器之间共享 session

python - 使用python(fastavro)解析多个相互引用的AVRO(avsc文件)