Получить из бд записи с такими же или похожими тегами?

Есть две таблицы с постами и тэгами к ним, и вспомогательная таблица для mtm отношения.

class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(140))
    tags = db.relationship('Tag', secondary=posts_tags, backref=db.backref('posts'), lazy='dynamic')

class Tag(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)

 posts_tags = db.Table('posts_tags',
                  db.Column('post_id', db.Integer, db.ForeignKey('post.id')),
                  db.Column('tag_id', db.Integer, db.ForeignKey('tag.id')),
                  )

подскажите, как реализовать запрос sqlalchemy для получения, постов с такими же или максимально похожими тегами.

нашел одну реализацию, но она на sql языке, которым не владею и пока не могу перевести на язык orm алхимии.

select pt1.post_id, count(*) qty from post_tags pt1
where tag_id in (select tag_id from post_tags pt2 where pt2.post_id=< заданный > and 
pt1.post_id<>pt2.post_id)
group by pt1.post_id
order by qty desc

Спасибо!)


Ответы (0 шт):