python多线程中sqlite数据库sqlalchemy的设置使用

python

背景描述:今天在做一个多线程的项目时按照普通的方式连接数据库提示线程问题。

MySQL等数据库一般都有异步驱动,尝试使用异步驱动解决时并没有完美解决问题,查看官方文档时看到这个方式:

在多线程场景中使用数据库,必须在线程之间共享相同的连接对象,因为数据库仅存在于该连接的范围内。该 StaticPool实现将在全局范围内维护单个连接,并且check_same_thread可以将标志传递给 Pysqlite 为False

from sqlalchemy.pool import StaticPool
engine = create_engine('sqlite://',
                    connect_args={'check_same_thread':False},
                    poolclass=StaticPool)

使用此方法需要注意使用的sqlite应该是最新版本的数据库。官方文档也有详细的解释,感兴趣的小伙伴可以点击查看!

也欢迎小伙伴关注本站,一起交流学习!