我有時會運行同時訪問同一數據庫的python腳本。這通常會導致數據庫鎖定錯誤。我希望腳本儘快重試,因爲數據庫永遠不會被鎖定。Sqlite3和Python:處理鎖定的數據庫
在while
循環內有沒有更好的方法來做到這一點,而不是except
並且該方法有什麼問題嗎?
我有時會運行同時訪問同一數據庫的python腳本。這通常會導致數據庫鎖定錯誤。我希望腳本儘快重試,因爲數據庫永遠不會被鎖定。Sqlite3和Python:處理鎖定的數據庫
在while
循環內有沒有更好的方法來做到這一點,而不是except
並且該方法有什麼問題嗎?
提高您的通話將timeout
參數爲connect function:
db = sqlite3.connect("myfile.db", timeout = 20)
如果您正在尋找併發性,SQLite是不是答案。當需要併發時引擎不能很好執行,特別是當從不同線程寫入時,即使表不相同。 如果您的腳本正在訪問不同的表,並且它們在數據庫級別(即聲明的FK)沒有關係,則可以將它們分隔到不同的數據庫中,然後解決併發問題。 如果它們已鏈接,但可以在應用程序級別(腳本)中鏈接它們,則也可以將它們分開。 在這些情況下,最好的做法是實現一個鎖定機制的事件,但老實說,我不知道如何實現這樣的phyton。
似乎對我完全合理......當然,如果你正在做需要併發訪問的東西,那麼你當然應該考慮與sqlite3不同的東西...... –