SQLAlchemy

时间:2016-09-21 10:02:50

标签: python sqlalchemy

对不起标题中的大字,但我正在努力解决这个问题。

问题

在我的教育机构数据库的时间表部分,有课程(课程)和TestExams。两者都以学生,教师,房间等形式在特定时间点索取资源。因此,我的关联表从TestExam或课程连接到学生,教师或房间(...)。我觉得通过文档和关于SO的各种文章在很多不同的方向发送,但没有更聪明。

关于SO的This文章似乎让我很接近,但并不完全在那里。 The documentation on polymorphic似乎表明这是不可能的。

顺便说一句,这些类反映在数据库中的现有视图中,因为数据层中有一些关于更改跟踪的功能。

Claim表(我的关联表)具有与课程或TestExam相关的claimer_idclaimer类型(==鉴别符),以及claimtype(= =鉴别者)和与教师,学生,房间有关的claim ..

为简单起见,我在这里仅提供了一个多态的实例。

谁能为我提供一个如何解决这个问题的例子?或者我完全走错了方向?

class Lesson(Base):
    __tablename__ = 'tx_lesson'
    pk = Column(Integer, FetchedValue())
    lesson_id = Column(Integer, FetchedValue(), primary_key=True)
    Lesson.claims = relationship('<claim?>', 
    primaryjoin="and_(Lesson.lesson_id == <claim?>.claimer_id,
                 <claim?>.claimertype == 'Lesson')",
                 back_populates='lessons', viewonly=True)

class Claim(Base):
    __tablename__ = 'tx_claim'
    pk = Column(Integer, FetchedValue())
    claim_id = Column(Integer, FetchedValue(), primary_key=True)
    claimer_id = Column(Integer, ForeignKey('<TestExam Or Lesson' _id))

    claim = Column(Integer, ForeignKey('<Teacher, Student or Room' _id))

class Student(Base):
    __tablename__ = 'tx_student'
    pk = Column(Integer, FetchedValue())
    student_id = Column(Integer, FetchedValue(), primary_key=True)
   __mapper_args__ = {'<Some Polymorphic black magic here>'}

class Teacher(Base):
    # similar columns ...
    pass

0 个答案:

没有答案