SQLAlchemy Обновление нескольких полей у нескольких объектов одним запросом к базе данных

Рейтинг: 0Ответов: 0Опубликовано: 14.04.2023

У меня есть список объектов модели Category, у которых изменились поля name, parent_id и archive, и мне нужно обновить эти объекты в базе данных. Сейчас я делаю это циклом - получаю объект из базы по id, задаю новые значения полей и обновляю объект. Это не оптимальный вариант и хотелось бы узнать, как я могу сделать это одним запросом к базе данных?

def update(id: int, instance: Category) -> None:
        instance.id = id
        instance = session.merge(instance)
        session.commit()
        return instance

def update_categories(categorues_to_update: list[Category]):
    for category_to_update in categories_to_update:
        category = session.execute(select(Category).where(Category.id==category_to_update.id))
        category.name = category_to_update.name
        category.parent_id = category_to_update.parent_id
        category.archive = category_to_update.archive
        update(category.id, category)

Ответы

Ответов пока нет.