sqlachemy中的联接如何工作?

class Enrollments(Base):
    __tablename__ = 'Enrollments'
    StudentID = Column(INTEGER, ForeignKey('Student.StudentID'))
    FinalGrade = Column(VARCHAR(3))



class Student(Base):
    __tablename__ = 'Student'

    StudentID = Column(INTEGER, primary_key=True)
    Name = Column(VARCHAR(100))
    EnrolledIn = relationship('Enrollments')


 session.query(Student).join(Enrollments).all() #what isn't giving me what I expect


我希望这能给我三列(StudentID,Name,FinalGrade,EnrolledIn),但这只是给我提供了不带应附加登记的Student对象,我在做什么错呢?

最佳答案

这些注册作为Student附加到每个student.EnrolledIn对象。

但是联接是用于查询,而不是获取;如果您想尽快加载它们,

session.query(Student).options(joinedload(Student.EnrolledIn))


关系加载记录在这里:http://docs.sqlalchemy.org/en/rel_0_9/orm/tutorial.html#eager-loading

顺便说一句,您可能想对对象的属性使用snake_case。由于DromedaryCase通常仅保留用于类名,因此阅读起来有点混乱:)

关于python - 在sqlalchemy中进行自然连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22871810/

10-13 03:05