Как обратиться к бд если она занята другой программой?

У меня появились проблемы с обращением к базе данных из другой программы.
У меня есть многопроцессорное приложение, которое использует базу данных SQLite и SqlAlchemy.
Вот так выглядит Engine:
engine = create_engine(f'sqlite:///{DATABASE_PATH}', poolclass=QueuePool)

Я решил обратиться к бд, тоже через SqlAlchemy из другой программы и меня появляется ошибка Database is locked.
Как решить эту проблему?
У меня есть идея, сделать некий API, например, на flask, чтобы программы обращились к ней через requests, но может есть, что-то полегче?
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Никак, SQLite не предназначен для конкурентного доступа.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
Как вариант, создаётся lock file рядом с базой, и все процессы, которые с ней работают, ставят эксклюзивную блокировку перед любой операцией с базой, а после её выполнения её снимают. Но всё же рекомендую перейти на самостоятельную СУБД.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы