Транзакция SQLite не работает как ожидалось

Я использовал следующий способ для указания порта прослушивания в командной строке:

flask run --host=0.0.0.0 --port=80

То, как вы использовали свой код (app.run), если я помню правильно, не рекомендуется в текущем выпуске колбы (использовать flask run для запуска сервера вместо python app.py).

Вы можете обратиться к этой странице для общего введения.

В моем понимании, новый способ значительно упрощает определение различных портов для различных сценариев.

5
задан Jon Seigel 13 April 2010 в 00:00
поделиться

1 ответ

Насколько я понимаю транзакции SQLite не блокируют базу данных если

  • a. Вы делаете их EXCLUSIVE (они DEFERRED по умолчанию), или
  • b. Вы на самом деле получаете доступ к базе данных

Так любой Вы явно звоните

$dbh->exec("BEGIN EXCLUSIVE TRANSACTION");

или Вы делаете операцию записи (INSERT/UPDATE) к DB, прежде чем Вы начнете sleep().

Процитировать документацию (шахта акцента):

Транзакции могут быть задержаны, непосредственные, или эксклюзивные. Поведение транзакции по умолчанию задерживается. Задержанный означает, что никакие блокировки не получены на базе данных, пока к базе данных сначала не получают доступ. Таким образом с отложенной транзакцией, BEGIN сам оператор ничего не делает. Блокировки не получены до первой операции чтения или операции записи. Первая операция чтения против базы данных создает КОЛЛЕКТИВНУЮ БЛОКИРОВКУ, и первая операция записи создает ЗАРЕЗЕРВИРОВАННУЮ блокировку.

10
ответ дан 13 December 2019 в 22:17
поделиться
Другие вопросы по тегам:

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