sqlite中的Unique约束并不总是引发integrityye

2024-05-21 01:50:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python's sqlite3 wrappers

我有一个表格,我使用:

CREATE TABLE IF NOT EXISTS patientsname (
    id INTEGER PRIMARY KEY AUTOINCREMENT, 
    original,
    cleaned,
    study INTEGER,
    UNIQUE(original, study),
    FOREIGN KEY(study) REFERENCES studyinstanceuid(id)
)

如果我尝试为同一个(original, id)插入多个时间,通常会得到:

^{pr2}$

每隔一段时间我就会得到(我在OSX上看到过):

OperationalError: UNIQUE constraint failed: patientsname.original, patientsname.study

在Linux上可以看到:

DatabaseError: UNIQUE constraint failed: patientsname.original, patientsname.study

捕捉唯一约束冲突的正确方法是什么?在

更新。看到OperationalError的版本:

>>> sqlite3.sqlite_version
'3.8.2'
>>> sqlite3.version
'2.6.0'

以及:

>>> sqlite3.sqlite_version
'3.8.7.4'
>>> sqlite3.version
'2.6.0'

Tags: keyidsqliteversionintegersqlite3表格wrappers