调用
conn.commit()以将事务刷新到磁盘。
程序退出时,最后一个未完成的事务将回滚到最后一个提交。(或更准确地说,回滚是由下一个打开数据库的程序完成的。)因此,如果
commit从不调用,则不会对数据库进行任何更改。
请注意,根据文档:
连接对象可用作自动提交或回滚事务的上下文管理器。发生异常时,事务将回滚;否则,将提交事务:
因此,如果您使用这样的with语句:
with sqlite3.connect('AssetBrowser.db') as conn: createTable() insert() printAll()那么当Python离开
with-statement并没有引发异常的错误时,交易将自动为您提交。
顺便说一句,如果使用
CREATE TABLE IF NOTEXISTS,则仅在表不存在的情况下才创建表。通过这种方式,您不必
createTable在调用一次后将其注释掉。
def createTable(): conn.execute('''CREATE TABLE IF NOT EXISTS VideoFile(ID INTEGER PRIMARY KEY NULL,FileNameTEXT NOT NULL,FilePathTEXT NOT NULL,numOfframes INT NOT NULL,FPS INT NOT NULL,TagsTEXT NOT NULL,Voting REAL);''')


