Я пытаюсь явно заблокировать таблицу Postgres, используя эту команду SQLAlchemy:SQLAlchemy явная блокировка Postgresql таблицы
db.engine.execute('BEGIN; LOCK TABLE database_version IN ACCESS EXCLUSIVE MODE;')
После этого выполняется, если я иду в клиенте базы данных и выполните команду:
select * from pg_catalog.pg_locks;
Нет никаких замков ACCESS EXCLUSIVE.
Если вместо этого я запускаю первую команду, но изнутри клиента db работает, как ожидалось.
Есть ли причина, по которой попытка блокировки таблицы из sqlalchemy работает некорректно?
В идеале, я хочу, чтобы только один процесс мог запрашивать и вставлять в таблицу database_version за раз.
Когда вы говорите «после этого исполняется», вы как-то поддерживаете соединение? Выходит ли скрипт, выполняющий эту инструкцию? – univerio
Я положил time.sleep (20) туда после этой строки, чтобы дать мне время перейти к клиенту и запустить запрос. – Andrew