Здравствуйте, мои маленькие любители программирования. Сегодня мы поговорим о блокировках.
Нет, Петров, речь пойдёт не об очередном ресурсе, который заблокировал Роскомнадзор. Вместо этого обсудим задачу конкурентного доступа к записям БД, или группам записей.
В далёком 2006 году в составе версии PostgreSQL 8.2 был добавлен механизм рекомендательных блокировок, за авторством Abhijit Menon-Sen и Tom Lane.
Эти ребята дали возможность пользователю блокировать то, что нужно, и тогда, когда нужно конечному пользователю БД. Не то, чтобы идея была прорывом - у Oracle, например, имелся свой механизм RDBMS_LOCKS.
Но для PostgreSQL это был шаг вперёд, релизация блокировок была встроена в lock manager, причём сразу в нескольких вариантах использования - на уровне сессии БД, и на уровне транзакции БД.
Сейчас на дворе 2026 год, но рекомендательные блокировки по-прежнему входят в состав ядра PostgreSQL. К сожалению, эффективное использование этого функционала на уровне raw SQL даётся не всем разработчикам.
Чтобы упростить работу с рекомендательными блокировками в приложении на Python + SQL Alchemy, была написана небольшая утилита pg-advisory-lock. Она предоставляет простой интерфейс, пряча всю сложную машинерию “под капотом”.
Вот ссылки на страничку утилиты, и на PyPi.
На сегодня всё, используйте инструмент с умом, до новых встреч!