У меня есть объект, который обертывает весь доступ к SQLAlchemy, давайте назовем его Wrapper. Я использую sqlalchemy.orm.scoped_session
, так что любой сеанс является локальным для потока, в котором находится этот класс согласно документации. Теперь у меня есть главный поток, который создает экземпляр Wrapper. Матерью были созданы несколько ведомых нитей, и они передали ссылку на Wrapper.
Когда любой Slave вызывает какую-либо SQLAlchemy, вызываемую из класса Wrapper, возникает следующая ошибка:
DB Exception raied: DB Error: (OperationalError) no such table:[...]
Что я делаю не так?
Должен ли я создавать новые экземпляры Wrapper для каждого раба?
Редактировать : Я использую SQLite в базе данных памяти (в основном для тестирования), если это имеет какое-либо значение. И победителем является: sqlite в памяти не может быть разделен между потоками , поэтому я могу передать движок Wrapper, если он не находится в памяти. Установка True в verbose - очень хороший инструмент для отладки.