如何在Python中使用SQLAlchemy和SQLite增加连接超时时间

17 投票
1 回答
13549 浏览
提问于 2025-04-17 17:02

我正在使用sqlite(版本2.6.0)作为数据库,并通过sqlalchemy(版本0.7.9)来操作它。

最近我遇到了一个错误,提示OperationalError: (OperationalError) database is locked,意思是数据库被锁住了。

我在StackOverflow上查找了一下,发现一个可能的解决办法是增加连接的超时时间。参考链接:OperationalError: database is locked

但是我不知道在sqlalchemy中该怎么做,因为连接实际上是由它来控制的。有没有人能给我一些方向呢?

1 个回答

31

SQLAlchemy的 create_engine() 函数有一个参数叫 connect_args,这个参数是一个字典,会被传递给底层数据库API的 connect() 方法(你可以查看自定义数据库API的 connect() 参数)。而 sqlite3.connect() 方法接受一个叫 timeout 的参数,所以这样写应该是可以的:

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

撰写回答