Gang,我开始使用 pySQLite,我正在尝试找到一个示例来说明如何在插入新记录(如果数据库中尚不存在)之前查询数据库中的现有记录。我觉得我忽略了一个非常基本的功能。
谢谢!
最佳答案
创建表时使用UNIQUE
关键字,使用INSERT OR INGORE
仅当记录是"new"(唯一)时才插入:
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
INSERT OR IGNORE
仅在通过 UNIQUE
约束时插入记录:
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))''')
这里是信息的链接
关于python - 基本的 pySQLite 示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5612745/