как заставить SQLlite выбрать для поведения транзакции обновления в sqlalchemy

Вчера я работал с некоторыми материалами sqlalchemy, которым нужна концепция «выбрать … для обновления», чтобы избежать состояния гонки. Добавление .with_lockmode('update') в запрос работает с обработкой InnoDB и Postgres, но для sqlite мне приходится скрываться в

 if session.bind.name == 'sqlite': session.execute('begin immediate transaction') 

перед тем, как сделать выбор.

Кажется, сейчас это работает, но это похоже на обман. Есть лучший способ сделать это?

One Solution collect form web for “как заставить SQLlite выбрать для поведения транзакции обновления в sqlalchemy”

SELECT … FOR UPDATE OF … не поддерживается. Это понятно, учитывая, что механика SQLite в этой блокировке строк избыточна, поскольку вся база данных блокируется при обновлении любого ее бита. Тем не менее, было бы хорошо, если бы будущая версия SQLite поддерживала его по причинам взаимозависимости SQL, если ничего другого. Единственная необходимая функциональность – обеспечить блокировку «ЗАПИСИ», если она еще не установлена.

выдержка из http://sqlite.org/cvstrac/wiki?p=UnsupportedSql

Я думаю, вам нужно синхронизировать доступ ко всей базе данных. нормальный механизм синхронизации также должен применяться здесь блокировка файлов, синхронизация процессов и т. д.

  • Базовая оболочка базы данных Python для SQLite
  • Можете ли вы добиться нечувствительного к регистру «уникального» ограничения в Sqlite3 (с Django)?
  • Возврат запроса DateTimeField Нет в Django
  • Ускорить запрос локального SDK-сервера App Engine при наличии нескольких свойств заказа?
  • Создать сводную («сводную»?) Таблицу
  • Sqlite и Python - вернуть словарь с использованием fetchone ()?
  • Python / SQLite3: невозможно зафиксировать - транзакция не активна
  • Отсутствует таблица при запуске Django Unittest с Sqlite3
  • Python - лучший язык программирования в мире.