Проверка Peewee на предмет «УДАЛЕНО НЕПРАВИЛЬНОЕ нарушение» во время сохранения () - PullRequest
0 голосов
/ 30 ноября 2018

Чтобы избежать дублирования записей в базе данных, рекомендуется использовать функцию индексации самой базы данных и позволить ей автоматически решать проблему.

Я настроил правильныйиндексы с миграцией peewee

migrator.add_index('mymodel', ('column1', 'column2', 'column3'), True),

, поэтому теперь, если я пытаюсь сохранить запись mymodel с уже существующими значениями column1, column2 и column3, я правильно получаю исключение прия.

Исключение выглядит следующим образом:

IntegrityError: UNIQUE constraint failed: mymodel.column1, mymodel.column2, mymodel.column3

Мой вопрос: IntegrityError когда-либо выбрасывается и для других возможных ошибок?Если да, как я могу отличить дубликаты при вставке от других ошибок?

Я хочу отлавливать и обрабатывать дубликаты вставок только , а не другие ошибки.Это возможно?

1 Ответ

0 голосов
/ 03 декабря 2018

БД выдает IntegrityError, чтобы указать нарушение ограничения (нарушение целостности БД).Из контекста запроса, который вы пытаетесь выполнить, вы можете попытаться определить, какое ограничение нарушено (например, добавление пользователя, имя пользователя которого уже существует и т. Д.).Но вам придется разобраться в самом сообщении об ошибке, чтобы различать множественные ограничения.

Если вы выполняете UPSERT, вы можете явно указать ограничение, но это своего рода нишевое использование.

...