Python sqlite3数据库已锁定

Python sqlite3数据库已锁定,python,python-3.x,sqlite,Python,Python 3.x,Sqlite,我在Windows上使用Python3和sqlite3。我正在开发一个使用数据库存储联系人的小应用程序。我注意到,如果应用程序强制关闭(通过错误或通过任务管理器结束),我会得到sqlite3错误(sqlite3.OperationalError:数据库被锁定) 我想这是因为我没有在应用程序关闭之前正确地关闭数据库连接。我试过这个: connection = sqlite3.connect(dbFile.db) connection.commit() connection.

我在Windows上使用Python3和sqlite3。我正在开发一个使用数据库存储联系人的小应用程序。我注意到,如果应用程序强制关闭(通过错误或通过任务管理器结束),我会得到sqlite3错误(sqlite3.OperationalError:数据库被锁定)

我想这是因为我没有在应用程序关闭之前正确地关闭数据库连接。我试过这个:

    connection = sqlite3.connect(dbFile.db)
    connection.commit()
    connection.close()
然后尝试重新打开连接,但锁定的数据库仍然存在。在崩溃之前是否有关闭数据库的方法?还是一种在应用程序中解锁数据库的方法?现在我唯一的解决方案是删除数据库,然后重新开始(这不会长期有效)


谢谢

如果您的应用程序强制关闭,您肯定不想提交当前事务,而是回滚以确保没有任何中断

捕捉到关闭信号后,请尝试以下操作:

connection.rollback()
connection.close()

文件是否在装入的目录中?有时可能会出现问题文件位于辅助硬盘驱动器(d)上。情况可能就是这样。有没有办法避免这种情况,或者我应该总是将这些文件保存在c驱动器上。谢谢除了我在其他地方找到的代码外(你肯定是对的,我不想提交,我只是想释放锁)。我遇到的问题是,在开发此应用程序时,我可能没有发现错误,并且该应用程序已被强制关闭,并且希望能够在不删除文件的情况下解锁或重置。请签出。您的程序在锁定数据库的操作期间死亡似乎是未定义的行为。我可以建议的选项是:改进程序中的错误处理,以确保在执行繁重的sql操作时不会强制退出。意外退出后,在启动时让程序检查是否有进程使用数据库,并将其杀死。这是一个好建议。我认为更好地处理错误是明智的,当我添加新代码并想要测试新特性时,问题会在调试过程中出现。