sqlite中的唯一约束并不总是引发IntegrityError

时间:2015-04-03 17:11:31

标签: python sqlite

我正在使用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)插入多个时间,我通常会得到:

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

每隔一段时间我就会得到(我在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'

0 个答案:

没有答案