sqlite3插入不提交

时间:2017-08-06 17:33:21

标签: python sqlite

当尝试将行插入具有唯一索引的表时,它似乎只是默默地不插入。

我已经捕获了以下程序中的行为:在第二次调用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')

1 个答案:

答案 0 :(得分:0)

在数据库操作结束时,将更改提交到数据库:

conn.commit()