SQLite запись из 2х соединений к одну базу. Либо запись в асинхронном варианте базы

На сколько я знаю и понимаю из документации, SQLite не поддерживает асинхронной записи верно ? Т.е. если открывать с флагом "Serialized" - то база просто будет лочиться при каждом обращении из каждого потока, если же "Single-thread" или "Multi-thread" - то синхронизатор доступа не создается вовсе как я вижу из кода базы и получается что каждое соединение думает что оно уникально.

Соответственно, мы можем либо создать одно соединение на запись и кучу на чтение по одному в каждом потоке (с флагом "Multi-thread"), либо одно соединение с флагом "Serialized" и тогда бутылочным горлышком будет не только запись но и чтение в том числе верно ?


Ответы (1 шт):

Автор решения: SerjK

Попробуйте установить параметр соединения check_same_thread=False https://docs.python.org/3/library/sqlite3.html

По умолчанию check_same_thread есть, True и только создающий поток может использовать соединение. Если установлено False, возвращенное соединение может совместно использоваться несколькими потоками. При использовании нескольких потоков с одним и тем же соединением операции записи должны быть сериализованы пользователем, чтобы избежать повреждения данных

→ Ссылка