9.1连接器/ Python连接池

支持简单的连接池具有以下特征:

  • mysql.connector.pooling.pooling.模块实现池。

  • 池在提供与请求者的连接时打开许多连接并处理线程安全性。

  • 连接池的大小在池创建时间可配置。此后不能调整大小。

  • 连接池可以在池创建时间点名。如果没有给出任何名称,则使用连接参数生成一个。

  • 可以从从中获得的连接池或连接中检索连接池名称。

  • 可以具有多个连接池。这使应用程序能够支持与不同的MySQL服务器的连接池。

  • 对于每个连接请求,池提供下一个可用连接。没有使用循环或其他调度算法。如果一个池筋疲力尽,aPAMERERROR.提出。

  • 可以重新配置池所使用的连接参数。这些应用于此后从池中获得的连接。通过调用连接重新配置从池中获取的各个连接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)

配置更改后从池请求的连接使用新参数。在更改之前获得的连接保持不受影响,但是当它们关闭时(返回到池),在池返回之前重新打开池以进行后续连接请求。