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