支持简单的连接池具有以下特征:
这
mysql.connector.pooling.pooling.
模块实现池。池在提供与请求者的连接时打开许多连接并处理线程安全性。
连接池的大小在池创建时间可配置。此后不能调整大小。
连接池可以在池创建时间点名。如果没有给出任何名称,则使用连接参数生成一个。
可以从从中获得的连接池或连接中检索连接池名称。
可以具有多个连接池。这使应用程序能够支持与不同的MySQL服务器的连接池。
对于每个连接请求,池提供下一个可用连接。没有使用循环或其他调度算法。如果一个池筋疲力尽,a
PAMERERROR.
提出。可以重新配置池所使用的连接参数。这些应用于此后从池中获得的连接。通过调用连接重新配置从池中获取的各个连接
config()
不支持方法。
可以从连接池中受益的应用程序包括:
中间件维护到多个MySQL服务器的多个连接,并需要随时可用连接。
网站可以拥有更多“永恒的“连接到MySQL Server的连接。
可以隐式或明确地创建连接池。
毫无隐含地创建连接池:打开连接并指定一个或多个与池相关的参数(pool_name.
那pool_size.
)。例如:
dbconfig = {“数据库”:“test”,“用户”:“joe”} cnx = mysql.conector.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.
说明没有给出连接()
呼叫自动生成名称,由此组成主持人
那港口
那用户
, 和数据库
以该顺序给出连接参数。如果是pool_size.
参数未给出,默认大小为5个连接。
随后拨打电话连接()
该名称与现有池中相同的连接池返回连接。任何pool_size.
或连接参数参数忽略,因此以下内容连接()
呼叫等同于原始连接()
呼叫前面显示:
cnx = mysql.connector.connect(pool_name =“mypool”,pool_size = 3)cnx = mysql.conector.connect(pool_name =“mypool”,** dbconfig)cnx = mysql.connector.connect(pool_name =“mypool”)
通过呼叫获得的汇总连接连接()
与池相关的论点有一类pooledmysqlconnection.
(看第10.4节“pooling.pooledmysqlconnection类”)。pooledmysqlconnection.
汇总连接对象类似于mysqlconnection.
未冻结的连接对象,具有以下差异:
要释放从连接池中获取的池连接,请调用其
关闭()
方法,就像任何未脱井连接一样。但是,对于汇集连接,关闭()
实际上并不关闭连接,但将其返回给池并可用于随后的连接请求。无法使用其重新配置池连接的连接
config()
方法。必须通过池对象本身完成连接更改,如下所述。汇集连接有一个
pool_name.
返回池名称的属性。
要明确创建连接池:创建一个mysqlconnectionpool.
对象(参见第10.3节“pooling.mysqlconnectionPool类”):
dbconfig = {“数据库”:“test”,“用户”:“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 = {“数据库”:“performance_schema”,“用户”:“admin”,“密码”:“密码“cnxpool.set_config(** dbconfig)
配置更改后从池请求的连接使用新参数。在更改之前获得的连接保持不受影响,但是当它们关闭时(返回到池),在池返回之前重新打开池以进行后续连接请求。