Я пытаюсь повторно использовать первичный ключ в одной из моих таблиц с помощью SQLAlchemy и получаю ошибку ограничения внешнего ключа.
В двух словах:
- PostgreSQL 8,4
- Python 2.7
- SQLAlchemy 0.7
У меня есть 3 таблицы: Пользователь, Запасы и Устройства. Запасы и устройства имеют непосредственное отношение к пользователю. User.id имеет внешний ключ Inventories.user_id и Devices.user_id.
У меня есть Пользователь, Устройства и Инвентаризация, настроенные в моделях / в соответствии со стандартными практиками Python.
В интерактивном Python я могу без проблем выполнить следующие команды:
>>>newUser = User.create()
>>>newUser.device = User.create_device(<*args>)
>>>Session.add(newUser)
>>>Session.commit()
(учетная запись автоматически создается в коде)
Теперь, допустим, я хочу повторно использовать запись пользователя 1 (это единственная запись, которая разрешает метод, называемый сбросом в коде, из соображений безопасности и внутреннего тестирования)
>>>oldUser = User.retrieve(1)
>>>Session.delete(oldUser)
>>>Session.commit()
(подтвердить, что пользователь 1 больше не существует)
>>>newUser = User.create()
>>>newUser.device = User.create_device(<*args>)
>>>newUser.id = 1
>>>Session.add(newUser)
>>>Session.commit()
В этот момент я либо получу сообщение об ошибке, что Key (id) = (<id>
) все еще ссылается из таблицы «устройства» (или «инвентаризации»), где <id>
- это newUser.id перед повторным присвоение его идентификатору 1
Я изучил каскадирование и попробовал различные варианты (все, сохранить-обновить и т. Д.) Безрезультатно.
Любая информация, указывающая, где я иду не так, будет принята с благодарностью,
Спасибо
Крыс