SQLAlchemy, потоки и таблица не такие ошибки таблицы - PullRequest
0 голосов
/ 07 декабря 2011

У меня есть объект, который обертывает весь доступ к 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 - очень хороший инструмент для отладки.

1 Ответ

1 голос
/ 07 декабря 2011

Да, либо создайте Wrapper в каждом потоке, либо попросите Wrapper поддерживать пул сеансов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...