python - 基本的 pySQLite 示例?

标签 python sqlite pysqlite

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))''')

这里是信息的链接

  1. INSERT OR IGNORE
  2. UNIQUE constraints

关于python - 基本的 pySQLite 示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5612745/

相关文章:

python - 为什么pip卸载不了pysqlite?

python - OpenAI gym mujoco ImportError : No module named 'mujoco_py.mjlib'

python - 在python中使用装饰器进行错误处理

python - 这个 if 语句表达得好吗?

c++ - 如何调试 SQLite3 中的绑定(bind)参数?

python - 在pyqtgraph的ImageView中设置X和Y范围

mysql - 使用生产数据库值填充开发数据库

带有ARC的iOS APP没有泄漏但事件字节增加

python - 在 Linux 上以用户身份使用完整的 Sqlite3 构建 Python 2.5