我有时会运行同时访问同一数据库的python脚本。这通常会导致数据库锁定错误。我希望脚本能够尽快重试,因为数据库永远不会被锁定。
有没有比在try
循环中使用except
while
更好的方法来执行此操作,该方法是否有任何问题?
答案 0 :(得分:0)
增加对connect function的调用中的timeout
参数:
db = sqlite3.connect("myfile.db", timeout = 20)
答案 1 :(得分:0)
如果您正在寻找并发性,SQlite不是答案。当需要并发时,引擎不能正常工作,特别是在从不同线程写入时,即使表不相同也是如此。 如果您的脚本访问不同的表,并且它们在数据库级别没有关系(即声明为FK),则可以将它们分隔在不同的数据库中,然后解决并发问题。 如果它们是链接的,但您可以在应用程序级别(脚本)中链接它们,您也可以将它们分开。 这些情况下的最佳实践是使用事件实现锁定机制,但老实说,我不知道如何在phyton中实现这一点。