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/