Метод get_isolation_level
Метод get_isolation_level класса
Connection
возвращает текущий уровень изоляции транзакций
для данного соединения. Метод не принимает
параметров и возвращает строку с названием
уровня изоляции, например SERIALIZABLE,
REPEATABLE READ, READ COMMITTED
или READ UNCOMMITTED. Значение берется
напрямую из драйвера базы данных.
Уровень изоляции определяет, как параллельные транзакции взаимодействуют друг с другом: какие аномалии чтения допускаются, а какие блокируются. Метод полезен при диагностике и проверке текущих настроек соединения.
Синтаксис
Connection.get_isolation_level()
Пример
Давайте создадим соединение с базой
SQLite в памяти и получим текущий
уровень изоляции:
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
level = conn.get_isolation_level()
print(level)
Результат выполнения кода:
"SERIALIZABLE"
Пример
Давайте выведем уровень изоляции вместе с информацией о диалекте соединения:
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
level = conn.get_isolation_level()
dialect = conn.dialect.name
print(f"dialect: {dialect}, isolation: {level}")
Результат выполнения кода:
"dialect: sqlite, isolation: SERIALIZABLE"
Пример
Давайте проверим уровень изоляции после выполнения запроса в транзакции:
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
conn.execute(text('SELECT 1'))
level = conn.get_isolation_level()
print(level)
Результат выполнения кода:
"SERIALIZABLE"
Смотрите также
-
класс
Connection,
который представляет соединение с базой данных -
метод
execution_options,
который задает параметры выполнения запросов -
метод
begin,
который открывает транзакцию -
атрибут
dialect,
который хранит диалект соединения