相关疑难解决方法(0)

IntegrityError:区分唯一约束和非空违规

我有这个代码:

try:
    principal = cls.objects.create(
        user_id=user.id,
        email=user.email,
        path='something'
    )
except IntegrityError:
    principal = cls.objects.get(
        user_id=user.id,
        email=user.email
    )
Run Code Online (Sandbox Code Playgroud)

它尝试使用给定的id和电子邮件创建用户,如果已存在,则尝试获取现有记录.

我知道这是一个糟糕的结构,无论如何它都会被重构.但我的问题是:

我如何确定IntegrityError发生了什么类型:与unique约束违规相关的一个((user_id,email)上有唯一键)或者与not null约束相关的那个(path不能为空)?

python django postgresql psycopg2

10
推荐指数
2
解决办法
1万
查看次数

标签 统计

django ×1

postgresql ×1

psycopg2 ×1

python ×1