大家好,我开始尝试使用pySQLite,我正在尝试寻找一个示例,说明如果数据库中不存在现有记录,如何在插入新记录之前查询数据库中的现有记录。我觉得我忽略了一个非常基本的功能。
谢谢!
发布于 2011-04-10 23:33:04
在创建表时使用UNIQUE关键字,只有在记录是“新的”(唯一的)时才使用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,baz) VALUES (?, ?)',(1,2))
except sqlite3.IntegrityError as err:
print(err)
# sqlite3.IntegrityError: column bar is not unique仅当传递UNIQUE约束时,INSERT OR IGNORE才插入记录:
cursor.execute('INSERT OR IGNORE INTO foo (bar,baz) VALUES (?, ?)',(1,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))''')以下是有关的信息的链接
https://stackoverflow.com/questions/5612745
复制相似问题