[英]How to intersect values in many-to-many relationship sqlalchemy?
我有表Teacher
。 它包含与表Student
的多对多关系。 学生包含唯一的列name
。 我怎样才能找到所有包含某些名字的学生的老师?
例如:
Teacher1 包含名为“Bob”的 Student1 和名为“Alice”的 Student2。
Teacher2 包含名为“Alice”的 Student2 和名为“Mark”的 Student3。
Teacher3 包含名为“Bob”的 Student1。
Teacher4 包含名为“Mark”的 Student3。
我得到名字["Alice", "Mark"]
。
在这个例子中,我必须得到教师 1、2、4。
如何编写这个 sqlalchemy 查询?
session.query(Teacher).filter(...).all()
?
假设您的关联多对多模型/表格是StudentTeacher
并且您正在寻找names=("Alice", "Mark",)
,这个查询应该返回您所期望的:
results = session.query(
Teacher
).join(StudentTeacher).join(Student).filter(
Student.name.in_(names)
).all()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.