如何在Python中使用SQLAlchemy和SQLite增加连接超时时间
我正在使用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})