#连接池对象
连接池对象(Connection Pool Object)用于管理和复用Python应用程序与数据库之间的连接。
仅yaspy模块支持池化连接。
# 对象创建方式
连接池对象需通过poolname = yaspy.SessionPool(parameters…)创建,相关参数如下表所示。
| 参数 | 描述 |
|---|---|
| poolname | 连接池的名称。 |
| user | 数据库用户名。 可选参数,若dsn中未指定则必选。 |
| password | 数据库用户密码。 可选参数,若dsn中未指定则必选。 |
| dsn | 数据源名称(Data Source Name),可包含数据库用户名、密码、数据库URL等信息,完整格式为user/password@url,URL格式如下:* 单地址连接: host:port* 多地址连接(primary类型): host:port,host:port,host:port或PRIMARY:host:port,host:port,host:port* 多地址连接(loadBalance类型): LOADBALANCE:host:port,host:port,host:port参数含义: * host:数据库所在服务器的网络地址,可以为IPv4地址、IPv6地址或域名。在共享集群部署中,若已配置SCAN或VIP,还可以使用相应的域名或IP地址。 * port:数据库服务端监听端口,如安装过程中未进行调整,默认为1688。 * primary:表示按顺序优先级连接主节点,驱动将按照指定的监听地址先后顺序对节点进行角色判断并连接首个主节点。 * loadBalance:表示负载均衡连接最优节点,驱动将自动识别出连接数最少的节点并连接。 |
| min | 当前连接池的最小连接数,取值范围为(0,4294967295],可选参数,默认值为2。 |
| max | 当前连接池的最大连接数,取值范围为[min,4294967295],可选参数,默认值为10。 |
| increment | 单次可创建的连接数,可选参数,默认值为1。 当池内连接耗尽但总连接数不超过max值时,新请求会根据increment值创建新连接。 |
| getmode | 连接获取模式,可选参数,目前固定为1,具体表现为: - 如果池内存在空闲连接,直接获得连接。 - 如果池内连接耗尽但总连接数不超过max值时,新请求会根据increment值创建新连接。 - 如果池内连接耗尽且总连接数已达到max值时,直接报错。 |
如果user和password中有特殊字符/、@、\,需要使用符号\进行转义,举例如下:
| dsn | user | password | host | port |
|---|---|---|---|---|
| 192.168.1.2:1688 | 未指定 | 未指定 | 192.168.1.2 | 1688 |
| sys@192.168.1.2:1688 | sys | 未指定 | 192.168.1.2 | 1688 |
| sys/yasdb_123@192.168.1.2:1688 | sys | yasdb_123 | 192.168.1.2 | 1688 |
| sys/yasdb\@_123@192.168.1.2:1688 | sys | yasdb@_123 | 192.168.1.2 | 1688 |
| sys\//yasdb\@_123@192.168.1.2:1688 | sys/ | yasdb@_123 | 192.168.1.2 | 1688 |
| s\/ys\@\\/yasdb\@_123@192.168.1.2:1688 | s/ys@\ | yasdb@_123 | 192.168.1.2 | 1688 |
# 连接池方法
| 方法 | 说明 |
|---|---|
| poolname.acquire() | 获取连接。 |
| poolname.release() | 归还连接。 |
| poolname.close() | 立即关闭连接池。 |

