Я определил модель базы данных со следующей структурой:
Семейство таблиц code> с полями id и адрес.
Таблица Persons с id, name, Family_id и родительский_id
Код: Выделить всё
family_id
Я хочу иметь операцию (для использования в REST-API), с помощью которой можно изменить семейство. Модификация может заключаться в добавлении новых членов в семейство и изменении их иерархической структуры.
При сохранении модификации я использую функцию SQLAlchemy session.merge(data).< /p>
Но это дает мне эффект, когда я изменяю семью, добавляя нового человека и определяя этого человека как родителя для одного или нескольких существующих людей (т. е. делая нового человека «родителем» существующие люди), то я получаю сообщение об ошибке, этот родительский_id не существует в таблице «Лица».
Я предполагаю, что это происходит потому, что слияние требует обновления существующих записей (дочерних элементов) перед вставкой нового человека (родителя).
Я могу реализовать обходной путь, вручную разделив людей на родителей и детей перед операцией слияния. Затем сначала объедините всех родителей, а затем всех детей. Но мне нравится иметь работающее решение и уровень ORM (т. е. где определена таблица Persons).
Вопрос
Можно ли явно установить порядок объектов при использовании session.merge() Чтобы сначала вставлять новые объекты, а затем обновлять существующие? Либо при определении модели, либо при вызове функции слияния.
Подробнее здесь: https://stackoverflow.com/questions/793 ... sion-merge