SQLite插入语句未更新表:Python PySimpleGUI场景下的问题排查
问题原因解析
问题的核心就是conn.commit和conn.commit()的本质区别:
conn.commit只是引用了SQLite连接对象的commit方法本身,并没有执行这个方法。SQLite中,插入数据这类DML(数据操纵语言)操作属于事务范畴,需要显式提交才能让修改生效。因为你只是引用了方法对象,没有触发提交动作,所以插入的数据不会被保存到数据库里,而且这种操作本身不会抛出错误,所以你看不到任何报错提示。conn.commit()才是真正调用了提交方法,它会把之前的事务(包括插入数据的操作)持久化到数据库中,所以数据能正常保存。
另外补充一点:为什么createFitnessClassTable里的表能创建成功?因为CREATE TABLE属于DDL(数据定义语言)语句,SQLite对这类语句会自动提交事务,不需要显式调用commit,所以即使没执行提交,表也能正常创建,但插入数据必须显式提交才行。
内容的提问来源于stack exchange,提问作者Vernita
相关产品推荐
相关产品推荐

