簡體   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