繁体   English   中英

如何在多对多关系sqlalchemy中相交值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM