- 数据库连接是一种关键的、有限的、昂贵的资源,在并发执行的应用程序中体现得尤为突出
- 数据连接池(Connection Pool)预先创建出一些数据库连接,然后缓存起来,避免了程序语言反复创建和销毁连接昂贵代价
数据库连接池得语法:
import mysql.connector.pooling
# 数据库连接信息
config = {……}
# 创建数据库连接池
pool = mysql.connector.pooling.MySQLConnectionPool(
# 连接数据库
**config,
# 连接池数量,这个具体的大小由硬件所决定
pool_size=10
)
# 从连接池取出空闲连接
con=pool.get_connection()
栗子:
import mysql.connector.pooling
config = {
"host" : "localhost" ,
"port" : 3306,
"user" : "root" ,
"password" : "123456" ,
"database" : "qa"
}
try:
# 创建连接池
pool = mysql.connector.pooling.MySQLConnectionPool(
**config,
pool_size=10
)
# 取出空闲连接,后面无需设置关闭
con = pool.get_connection()
# 开启事务
con.start_transaction()
# 创建游标
cursor = con.cursor()
sql = "insert into my_class(id,name,class) value (%s,%s,%s)"
# 执行sql
cursor.execute(sql, (4, '张三', 'A'))
# 提交
con.commit()
except Exception as e:
# 若是数据库连接成功,但是执行SQL出现报错,回滚事务
if "con" in dir():
con.rollback()
print(e)