【问题标题】:Sqlite3 and Python: Handling a locked databaseSqlite3 和 Python:处理锁定的数据库
【发布时间】:2014-03-06 19:17:55
【问题描述】:

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

有没有比在while 循环中使用try except 更好的方法,这种方法有什么问题吗?

【问题讨论】:

  • 对我来说似乎完全合理...当然,如果您正在做需要并发访问的东西,那么您当然应该考虑与 sqlite3 不同的东西...

标签: python sqlite


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-05
      • 2012-10-07
      相关资源
      最近更新 更多