当尝试将行插入具有唯一索引的表时,它似乎只是默默地不插入。
我已经捕获了以下程序中的行为:在第二次调用test_insert时,我应该在唯一键上获得完整性违规。但没什么。此外,如果我采用c.execute(query, [id_to_test])
行并在其下方复制自己,我确实会收到正确的完整性约束。这里发生了什么?
import sqlite3
def test_insert(id_to_test):
conn = sqlite3.connect('test.db')
c = conn.cursor()
query = '''INSERT INTO test(unique_id)
VALUES(?)'''
c.execute(query, [id_to_test])
def setup_table():
conn = sqlite3.connect('test.db')
c = conn.cursor()
c.execute('''DROP TABLE IF EXISTS test''')
c.execute('''CREATE TABLE test (unique_id text)''')
c.execute('''CREATE UNIQUE INDEX test_unique_id ON test (unique_id)''')
if __name__ == '__main__':
setup_table()
test_insert('test_id')
test_insert('test_id')
test_insert('test_id')
答案 0 :(得分:0)
在数据库操作结束时,将更改提交到数据库:
conn.commit()