2013-02-25 52 views
6

Tôi đang sử dụng sqlite (v2.6.0) làm cơ sở dữ liệu phụ trợ và sử dụng sqlalchemy (v0.7.9) để vận hành nó. Gần đây tôi gặp lỗi OperationalError: (OperationalError) database is lockedCách tăng thời gian chờ kết nối bằng sqlalchemy với sqlite trong python

Bằng cách tìm kiếm luồng lưu trữ, một giải pháp có thể là tăng thời gian chờ kết nối. referece: OperationalError: database is locked

Nhưng tôi không biết làm thế nào để tôi rằng trong SQLAlchemy (kể từ khi kết nối đang thực sự kiểm soát bởi nó) Ai đó có thể cho tôi một hướng?

+1

fwiw, tăng thời gian chờ là khả năng duy nhất sẽ làm cho lỗi này ít gặp hơn. tốt hơn là triển khai thử lại. –

Trả lời

13

SQLAlchemy's create_engine() lấy một đối số connect_args là từ điển sẽ được chuyển đến connect() của DBAPI cơ bản (xem Custom DBAPI connect() arguments). sqlite3.connect() chấp nhận timeout đối số, vì vậy đây sẽ làm việc:

create_engine('sqlite:///some.db', connect_args={'timeout': 15}) 
+0

Cảm ơn rất nhiều. Đó chỉ là những gì tôi đã bỏ lỡ. – user1817188

+8

Trong trường hợp bất kỳ ai đang cố gắng giải quyết cùng một vấn đề cho PostgreSQL 9.3, đối số connect_args sẽ được viết khác nhau: connect_args = {'connect_timeout': 15} –

Các vấn đề liên quan