基本的pySQLite示例?

时间:2011-04-10 15:26:14

标签: python sqlite pysqlite

Gang,我开始玩pySQLite了,我试图找到一个例子,说明如果在db中没有新记录,在插入新记录之前如何查询db以查找现有记录。我觉得我忽略了一个非常基本的功能。

谢谢!

1 个答案:

答案 0 :(得分:11)

创建表时使用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,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))''')

以下是

信息的链接
  1. INSERT OR IGNORE
  2. UNIQUE constraints