Если вы определили дочерние идентификаторы в подзапросе, вы можете выполнить левое соединение из таблицы сопоставлений с этим подзапросом и проверить, что счетчик правильный:
from sqlalchemy import func, and_
Values = [1 ,3]
childcount = len(Values)
childsquery = db.session.query(Child).filter(Child.id.in_(Values)).subquery()
resultparents = db.session.query(Association.parent_id).outerjoin(childsquery).group_by(Association.parent_id).having(and_(func.count(Association.parent_id) == childcount, func.count(childsquery.c.id) == childcount))
Примечание: я думаю, что ваша модель нуждается быть исправленным:
class Parent(db.Model):
id = db.Column(db.Integer, primary_key=True)
children = db.relationship("Association", back_populates='parent',
lazy='dynamic', cascade="save-update, merge, delete, delete-orphan")
class Child(db.Model):
id = db.Column(db.Integer, primary_key=True)
parents = db.relationship("Association", back_populates='child',
lazy='dynamic', cascade="save-update, merge, delete, delete orphan")