2014-03-05 34 views
0

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

while循环内有没有更好的方法来做到这一点,而不是except并且该方法有什么问题吗?

+0

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

回答

0

提高您的通话将timeout参数为connect function

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

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