解决方法
在创建表时使用UNIQUE关键字,并仅在记录为“new”(唯一)时使用INSERT OR INGORE插入:
connection=sqlite3.connect(':memory:') cursor=connection.cursor() cursor.execute('CREATE TABLE foo (bar INTEGER UNIQUE,baz INTEGER)')
这里我们插入一次行:
cursor.execute('INSERT INTO foo (bar,baz) VALUES (?,?)',(1,2))
尝试再次插入行失败:
try: cursor.execute('INSERT INTO foo (bar,2)) except sqlite3.IntegrityError as err: print(err) # sqlite3.IntegrityError: column bar is not unique
INSERT或IGNORE仅在传递UNIQUE约束时才插入记录:
cursor.execute('INSERT OR IGNORE INTO foo (bar,3)) cursor.execute('SELECT * from foo') data=cursor.fetchall() print(data) # [(1,2)]
要在多个字段上创建UNIQUE索引,请使用类似的内容
cursor.execute(''' CREATE TABLE foo (bar INTEGER,baz INTEGER,bing INTEGER,UNIQUE (bar,baz))''')
以下是信息的链接