Метод connect
Метод connect класса Pool возвращает
соединение из пула. Первым параметром метод принимает
необязательный объект соединения, а также допускает
передачу дополнительных параметров через именованные
аргументы. Полученное соединение необходимо вернуть
в пул методом close, иначе оно останется
занятым и пул не сможет переиспользовать его.
Синтаксис
pool.connect()
Пример
Давайте создадим пул и получим из него соединение:
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
pool = engine.pool
conn = pool.connect()
print(conn)
conn.close()
Результат выполнения кода:
"<sqlalchemy.pool.base._ConnectionFairy object at ...>"
Пример
Давайте получим соединение из пула и выполним через него SQL-запрос:
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///:memory:')
pool = engine.pool
conn = pool.connect()
res = conn.execute(text('SELECT 1'))
print(res.scalar())
conn.close()
Результат выполнения кода:
1
Пример
Давайте посмотрим, как меняется состояние пула при выдаче соединения:
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
pool = engine.pool
print(pool.status())
conn = pool.connect()
print(pool.status())
conn.close()
print(pool.status())
Результат выполнения кода:
"Pool size: 5 Connections in pool: 0 Current Overflow: -5 Current Checked out connections: 0"
"Pool size: 5 Connections in pool: 0 Current Overflow: -4 Current Checked out connections: 1"
"Pool size: 5 Connections in pool: 1 Current Overflow: -5 Current Checked out connections: 0"