假设我有一个字符串列表可能有重复的项目:
A
B
C
A
A
C
D
E
F
F
我想让列表可以为每个项目分配一个唯一索引,如下所示:
1 A
2 B
3 C
4 D
5 E
6 F
现在我用以下SQL语句创建了sqlite3数据库:
CREATE TABLE aa ( myid INTEGER PRIMARY KEY AUTOINCREMENT,
name STRING,
UNIQUE (myid) ON CONFLICT FAIL,
UNIQUE (name) ON CONFLICT FAIL);
计划是在python中将每一行插入数据库。
我的问题是当在python模块sqlite3中插入时发生冲突时如何处理错误? 例如:程序将打印一条警告消息,哪个项目存在冲突,并在插入python时继续下一次插入操作?
由于
答案 0 :(得分:1)
您可以使用一个集来过滤列表中的双重条目,只需插入值:
>>> set(['A', 'B', 'C', 'D', 'A', 'A', 'A', 1, 2, 1, 3, object(), object()])
set(['A', 1, 'C', 'B', 'D', 2, <object object at 0x100274590>, 3, <object object
at 0x1002746a0>])
或在每次提交时使用try-except子句来检查该值是否已存在于数据库中。
答案 1 :(得分:1)
为什么不尝试一下并检查引发了哪个异常?我认为这不是太难,但是......
try:
conn.excecute('...')
except IntegrityError:
pass