#python #sqlalchemy
Вопрос:
У меня есть такой столик, как:
Мне нужно удалить всю запись с этой таблицей по идентификатору comment_id, в данном случае это 1, но может быть намного больше, [1,2,3] например, как я могу это сделать с помощью оператора?
Мой код:
def delete_comments(comments_ids:List[str])
parent_comment_ids = select(self.Comment.comment_id).
filter(
self.comment_id.parent_comment_id.in_(
[1]
)
)
results = await session.execute(parent_comment_ids)
comments_ids.extend(results.scalars().unique().all())
statement = delete(Comment).filter(
self.Comment.comment_id.in_(
comments_ids
)
)
Это работает, но я думаю, что это не очень хорошее решение. Как я могу это улучшить?
Буду благодарен за помощь.
Комментарии:
1. почему бы просто не
ON CASCADE DELETE
включить внешний ключ отparent_comment_id
доcomment_id
, и БД сделает это за вас, когда вы просто удалите его, используя полученныйcomment_ids
.