首页 > 解决方案 > Python 抱怨在一个线程中创建的 SQLite 对象只能在那个线程中使用,但我没有尝试访问任何其他线程中的任何 SQLite 对象

问题描述

导入的文件中包含在导入时运行的代码。

engine = create_engine("sqlite:///database.db")
Base.metadata.create_all(engine)

在一个不相关的文件(但仍然是同一个包的一部分)中,我使用了这段代码。

t = threading.Thread(target=_play)
t.start()

这是我唯一创建的另一个线程,_play只是播放一个声音文件。它没有对 SQLite 的任何引用。

我收到的错误如下。

sqlite3.ProgrammingError: SQLite objects created in a thread can only be used in that same thread.

为什么我会收到这样的错误?

标签: pythonmultithreadingsqlite

解决方案


我仍然不确定为什么会发生这样的事情,但playsound模块是这里的问题。我切换到simpleaudio并没有这个问题了。


推荐阅读