Sqlite3和Python:处理锁定的数据库

时间:2014-03-05 07:23:43

标签: python sqlite

我有时会运行同时访问同一数据库的python脚本。这通常会导致数据库锁定错误。我希望脚本能够尽快重试,因为数据库永远不会被锁定。

有没有比在try循环中使用except while更好的方法来执行此操作,该方法是否有任何问题?

2 个答案:

答案 0 :(得分:0)

增加对connect function的调用中的timeout参数:

db = sqlite3.connect("myfile.db", timeout = 20)

答案 1 :(得分:0)

如果您正在寻找并发性,SQlite不是答案。当需要并发时,引擎不能正常工作,特别是在从不同线程写入时,即使表不相同也是如此。 如果您的脚本访问不同的表,并且它们在数据库级别没有关系(即声明为FK),则可以将它们分隔在不同的数据库中,然后解决并发问题。 如果它们是链接的,但您可以在应用程序级别(脚本)中链接它们,您也可以将它们分开。 这些情况下的最佳实践是使用事件实现锁定机制,但老实说,我不知道如何在phyton中实现这一点。