9.5 Пулы подключений Connector/Python
Поддерживается простой пул подключений со следующими характеристиками:
Модуль
mysql.connector.poolingреализует пул.Пул открывает определенное количество подключений и обрабатывает безопасность потоков при предоставлении подключений запрашивающим.
Размер пула подключений настраивается при создании пула. Он не может быть изменен после этого.
Пул подключений может быть назван при его создании. Если имя не задано, оно генерируется с использованием параметров подключения.
Имя пула подключений может быть получено из самого пула подключений или подключений, полученных из него.
Можно иметь несколько пулов подключений. Это позволяет приложениям поддерживать пулы подключений к различным серверам MySQL, например.
Для каждого запроса подключения пул предоставляет следующее доступное подключение. Не используется алгоритм циклического обхода или другой алгоритм планирования. Если пул исчерпан, генерируется исключение
PoolError.Можно переконфигурировать параметры подключения, используемые пулом. Они применяются к подключениям, полученным из пула после этого. Переконфигурация отдельных подключений, полученных из пула, вызовом метода подключения
config()не поддерживается.
Приложения, которые могут извлечь выгоду из возможности пула подключений, включают:
Программное обеспечение среднего уровня, которое поддерживает несколько подключений к нескольким серверам MySQL и требует, чтобы подключения были доступны.
Веб-сайты, которые могут иметь больше «постоянных» подключений к серверу MySQL.
Пул подключений можно создать неявно или явно.
Для создания пула подключений неявно: Откройте подключение и укажите один или несколько аргументов, связанных с пулом (pool_name, pool_size). Например:
dbconfig = {
"database": "test",
"user": "joe"
}
cnx = mysql.connector.connect(pool_name = "mypool",
pool_size = 3,
**dbconfig)
Имя пула ограничено алфавитно-цифровыми символами и специальными символами ., _, *, $ и #. Имя пула должно быть не более pooling.CNX_POOL_MAXNAMESIZE символов (по умолчанию 64).
Размер пула должен быть больше 0 и меньше или равен pooling.CNX_POOL_MAXSIZE (по умолчанию 32).
При наличии аргумента pool_name или pool_size Connector/Python создает новый пул. Если аргумент pool_name не задан, вызов connect() автоматически генерирует имя, составленное из любых заданных аргументов подключения host, port, user и database в указанном порядке. Если аргумент pool_size не задан, размер по умолчанию составляет 5 подключений.
Последующие вызовы connect() с тем же именем пула подключений возвращают подключения из существующего пула. Любые аргументы pool_size или параметры подключения игнорируются, поэтому следующие вызовы connect() эквивалентны исходному вызову connect(), показанному ранее:
cnx = mysql.connector.connect(pool_name = "mypool", pool_size = 3)
cnx = mysql.connector.connect(pool_name = "mypool", **dbconfig)
cnx = mysql.connector.connect(pool_name = "mypool")
Подключения из пула, полученные путем вызова connect() с аргументом, связанным с пулом, имеют класс PooledMySQLConnection (см. Раздел 10.4, «Класс pooling.PooledMySQLConnection»). Объекты подключений с пулом PooledMySQLConnection похожи на объекты подключений без пула MySQLConnection, с этими отличиями:
Чтобы освободить подключение из пула, полученное из пула подключений, вызовите его метод
close(), как и для любого непулового подключения. Однако для подключений из пула,close()фактически не закрывает подключение, а возвращает его в пул, делая его доступным для последующих запросов на подключение.Подключение из пула нельзя переконфигурировать с помощью метода
config(). Изменения подключения должны выполняться через сам объект пула, как описано ниже.Подключение из пула имеет свойство
pool_name, которое возвращает имя пула.
Для создания пула подключений явно: Создайте объект MySQLConnectionPool (см. Раздел 10.3, «Класс pooling.MySQLConnectionPool»):
dbconfig = {
"database": "test",
"user": "joe"
}
cnxpool = mysql.connector.pooling.MySQLConnectionPool(pool_name = "mypool",
pool_size = 3,
**dbconfig)
Для запроса подключения из пула используйте его метод get_connection():
cnx1 = cnxpool.get_connection()
cnx2 = cnxpool.get_connection()
При явном создании пула подключений можно использовать метод объекта пула set_config() для переконфигурации параметров подключения пула:
dbconfig = {
"database": "performance_schema",
"user": "admin",
"password": "password"
}
cnxpool.set_config(**dbconfig)
Подключения, запрошенные из пула после изменения конфигурации, используют новые параметры. Подключения, полученные до изменения, остаются неизменными, но когда они закрываются (возвращаются в пул), они повторно открываются с новыми параметрами перед возвращением пулом для последующих запросов на подключение.
© 2025 Oracle
Licensed under the GPLv2 License.