@This_is_MonoliT

Что значит check_same_thread? В Python sqlite3?

Что значит check_same_thread?
И что будет если установить False? И наоборот
  • Вопрос задан
  • 2330 просмотров
Решения вопроса 2
Vindicar
@Vindicar
RTFM!
sqlite3 не потоко-безопасна - если ты одновременно обращаешься к базе из нескольких потоков, это может запороть базу.
Соответственно, по умолчанию библиотека проверяет, что подключение к базе используется тем же потоком, который создал этот подключение - т.е. что оно ограничено рамками одного потока. Если это не так, выбрасывается исключение. Это поведение по умолчанию, чтобы новички потом не плакались "почему у меня иногда база портится?!!"

Но если ты очень осторожен и не допускаешь одновременных запросов (с помощью синхронизации по мьютексу. например), то можно безопасно использовать одно подключение из нескольких потоков. Тогда можно сказать sqlite "не дергайся насчёт потоков, я знаю что делаю". Вот эту возможность (подавить проверку) и предоставляет параметр check_same_thread = False.
Ответ написан
Комментировать
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
By default, check_same_thread is True and only the creating thread may use the connection. If set False, the returned connection may be shared across multiple threads. When using multiple threads with the same connection writing operations should be serialized by the user to avoid data corruption.

https://docs.python.org/3/library/sqlite3.html#sql...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы