如何使用sqlite3在python中构建索引表(python dict like)

时间:2010-06-18 05:57:02

标签: python dictionary sqlite

假设我有一个字符串列表可能有重复的项目:

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时继续下一次插入操作?

由于

2 个答案:

答案 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