#python #sqlalchemy #orm #relationship
Вопрос:
- Один факультет предлагает множество курсов(предметов) — один ко многим
- На одной кафедре много профессоров — один ко многим
- Одну кафедру возглавляет один профессор — один к одному
- Один курс может быть записан многими студентами, и один студент может записаться на множество курсов — от многих до многих
- Один курс преподает только один профессор, но один профессор преподает много курсов — от многих до одного
models.py
from sqlalchemy import Column, ForeignKey, Integer, String
from sqlalchemy.orm import relationship
from sqlalchemy.sql.schema import Table
from .database import Base
class Department(Base):
__tablename__ = "department"
id = Column(Integer, primary_key=True, index=True)
department_name = Column(String)
hod_id = Column(Integer, primary_key=True)
professor = relationship("Professors", backref="department")
class Professor(Base):
__tablename__ = "professor"
id = Column(Integer, primary_key=True, index=True)
professor_name = Column(String)
hod_id = Column(Integer, ForeignKey("hod.id"))
professor_id = Column(Integer, ForeignKey("professor.id"))
association_table = Table(
"association_table",
Column("course_id", Integer, ForeignKey("course.course_id")),
Column("student_id", Integer, ForeignKey("student.student_id")),
)
class Student(Base):
__tablename__ = "student"
student_id = Column(Integer, primary_key=True, index=True)
student_name = Column(String)
class Course(Base):
__tablename__ = "course"
course_id = Column(Integer, primary_key=True, index=True)
course_name = Column(String, unique=True)
students = relationship("Student", secondary=association_table)
How do I define two or more relationships for a single table? How do I write models.py for my ER Diagram and I’m confused if departments are one to many relationships or should it be many to many?