Python жалуется, что объекты SQLite, созданные в потоке, могут использоваться только в этом потоке, но я не пытаюсь получить доступ к какому-либо объекту SQLite в любом другом потоке

#python #multithreading #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.

Почему я могу получить такую ошибку?

Комментарии:

1. Пожалуйста, создайте минимальный рабочий пример, демонстрирующий проблему!

Ответ №1:

Я все еще не уверен, почему такое происходит, но playsound проблема здесь в модуле. Я переключился на simpleaudio и больше не имел этой проблемы.

Комментарии:

1. Без воспроизводимого вопроса и объяснения этот ответ не будет полезным.