python mysql连接池
时间: 2023-06-28 11:07:39 浏览: 126
使用连接池可以显著提高数据库操作的效率,降低资源消耗。在 Python 中,我们可以使用 `mysql-connector-python` 库来连接 MySQL 数据库,而 `mysql-connector-pool` 库提供了连接池的支持。
以下是使用 `mysql-connector-pool` 库创建 MySQL 连接池的示例代码:
```python
import mysql.connector.pooling
# 创建连接池
config = {
"host": "localhost",
"user": "root",
"password": "123456",
"database": "test",
"pool_name": "mypool",
"pool_size": 5 # 连接池中最多同时存在的连接数
}
cnxpool = mysql.connector.pooling.MySQLConnectionPool(**config)
# 从连接池中获取连接
cnx = cnxpool.get_connection()
# 执行 SQL 查询
cursor = cnx.cursor()
query = "SELECT * FROM mytable"
cursor.execute(query)
# 处理查询结果
rows = cursor.fetchall()
for row in rows:
print(row)
# 释放资源
cursor.close()
cnx.close()
```
在这个示例中,我们通过 `mysql.connector.pooling.MySQLConnectionPool` 类创建了一个名为 `mypool` 的连接池,其中最多可以同时存在 5 个连接。然后,我们通过 `cnxpool.get_connection()` 方法从连接池中获取一个连接,执行 SQL 查询,并处理查询结果。最后,我们需要关闭游标和连接,以释放资源。
需要注意的是,使用连接池时,我们不需要手动关闭连接,而是应该使用 `with` 语句自动管理连接的生命周期。例如:
```python
import mysql.connector.pooling
config = {
"host": "localhost",
"user": "root",
"password": "123456",
"database": "test",
"pool_name": "mypool",
"pool_size": 5
}
cnxpool = mysql.connector.pooling.MySQLConnectionPool(**config)
# 从连接池中获取连接,并使用 with 语句自动管理连接的生命周期
with cnxpool.get_connection() as cnx:
cursor = cnx.cursor()
query = "SELECT * FROM mytable"
cursor.execute(query)
rows = cursor.fetchall()
for row in rows:
print(row)
cursor.close()
```
在这个示例中,我们使用 `with` 语句自动管理 `cnx` 的生命周期,当 `with` 块执行完毕时,Python 会自动调用 `cnx.close()` 方法关闭连接。
阅读全文