
Python使用连接池操作mysql
1、安装mysql.connector包
2、具体代码如下
# 使用mysql的连接池技术来提高性能
import mysql.connector
from mysql.connector import pooling
# 定义数据库连接参数
dbconfig = {
"host": "localhost",
"user": "root",
"password": "123456",
"database": "demo"
}
# 创建连接池
pool = pooling.MySQLConnectionPool(
pool_name="mypool",
pool_size=5,
**dbconfig
)
def insert():
# 定义插入语句
new_employee = (
'insert into employee(name,age,create_time) values(%s,%s,%s)')
# 定义插入的数据
employee1 = ('Tom', 18, '2018-01-01')
employee2 = ('Jerry', 20, '2018-01-02')
try:
with pool.get_connection() as conn:
conn = pool.get_connection()
with conn.cursor() as cursor:
# 执行插入语句
cursor.execute(new_employee, employee1)
cursor.execute(new_employee, employee2)
# 提交事务
conn.commit()
except Exception as e:
# 发生错误时回滚事务
print(f'Error occurred:{e}')
conn.rollback()
else:
# 插入成功时打印提示信息
print('Insert successful')
if __name__ == '__main__':
insert()
3、注意
使用上下文管理器,通过
with
语句自动归还连接(无需手动调用close()
)如果mysql配置了自动提交模式(
autocommit=True
),每个 SQL 语句会立即生效,无需手动提交或回滚conn.close()
是否需要调用?必须调用。连接池的连接本质是“借用”:调用conn.close()
并不会真正关闭连接,而是将其标记为空闲状态并归还到池中。不关闭的后果:连接会一直被占用,最终导致连接池耗尽(所有连接都在“使用中”状态)。