为避免在数据库中重复输入,recommended是使用数据库本身的索引功能并让它自动处理问题。
我通过小偷迁移建立了正确的索引
context
因此,现在,如果我尝试使用已经存在的migrator.add_index('mymodel', ('column1', 'column2', 'column3'), True),
,mymodel
和column1
值保存一个column2
条目,我将正确地抛出一个异常。 / p>
异常看起来像这样:
column3
我的问题是:是否也IntegrityError: UNIQUE constraint failed: mymodel.column1, mymodel.column2, mymodel.column3
引发了其他可能的错误?如果是,该如何区分重复插入和其他错误?
我只想 捕获并处理重复的插入,而不是其他错误。这可能吗?
答案 0 :(得分:1)
DB引发IntegrityError来指示违反约束(违反db完整性)。从您尝试执行的查询的上下文中,您可以尝试推断违反了什么约束(例如,添加用户名已经存在的用户,等等)。但是您必须深入研究错误消息本身,以区分多个约束。
如果您要进行UPSERT,则可以显式指定约束,但这只是一种利基用法。