加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 基本的pySQLite示例?

发布时间:2020-12-16 23:12:09 所属栏目:Python 来源:网络整理
导读:Gang,我开始玩pySQLite了,我正在尝试找一个例子,说明如果在db中存在新记录之前如何在插入新记录之前查询db的现有记录.我觉得我忽略了一个非常基本的功能. 谢谢! 解决方法 在创建表时使用UNIQUE关键字,并仅在记录为“new”(唯一)时使用INSERT OR INGORE插入
Gang,我开始玩pySQLite了,我正在尝试找一个例子,说明如果在db中存在新记录之前如何在插入新记录之前查询db的现有记录.我觉得我忽略了一个非常基本的功能.

谢谢!

解决方法

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

以下是信息的链接

> INSERT OR IGNORE
> UNIQUE constraints

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读