DBUtils 是一个用于管理数据库连接池的 Python 库,它提供了连接池的管理,可以避免每次举行数据库利用时都重新建立连接。通过 DBUtils,你可以更高效地管理数据库连接,尤其在高并发的情况下,能够有用淘汰创建和烧毁连接的开销。DBUtils 支持多种数据库驱动,包括 MySQL、PostgreSQL、SQLite 等。
安装DBUtils
起首,利用 pip 安装 DBUtils:
利用 DBUtils 连接池
以下是一个怎样利用 DBUtils 管理 MySQL 数据库连接池的简朴示例。
- import MySQLdb
- from dbutils.pooled_db import PooledDB
- # 创建数据库连接池
- pool = PooledDB(
- creator=MySQLdb, # 数据库驱动,使用 MySQLdb 连接 MySQL 数据库
- maxconnections=10, # 连接池中允许的最大连接数
- mincached=2, # 初始化时创建的空闲连接数
- maxcached=5, # 连接池中空闲连接的最大数量
- maxshared=3, # 连接池中共享连接的最大数目
- blocking=True, # 如果没有可用连接时,是否阻塞等待
- host='localhost', # 数据库主机地址
- user='your_username',# 数据库用户名
- passwd='your_password', # 数据库密码
- db='your_database', # 数据库名
- port=3306 # 数据库端口
- )
- # 从连接池获取一个连接
- conn = pool.connection()
- # 获取游标
- cursor = conn.cursor()
- # 执行查询操作
- try:
- cursor.execute("SELECT * FROM your_table")
- result = cursor.fetchall()
- for row in result:
- print(row)
- finally:
- cursor.close() # 关闭游标
- conn.close() # 将连接归还到连接池
复制代码 代码解释
1.创建连接池:PooledDB 用来创建数据库连接池。它的参数如下:
- creator:指定用于连接数据库的驱动库,通常是像 MySQLdb 或 pymysql 这样的数据库驱动。
- maxconnections:连接池中的最大连接数。
- mincached:连接池初始化时创建的空闲连接数。
- maxcached:连接池中空闲连接的最大数量。
- maxshared:最多允许共享的连接数。
- blocking:如果连接池没有可用连接时,是否壅闭。True 表现壅闭,False 表现不壅闭。
2.获取连接: 利用 pool.connection() 从连接池获取一个数据库连接。
3.利用数据库: 利用连接创建游标 conn.cursor(),然后执行 SQL 语句来查询或修改数据库。
4.关闭游标和连接: 利用 cursor.close() 关闭游标,而且用 conn.close() 将连接归还给连接池,而不是实际关闭连接。
设置选项:
- maxconnections:连接池中允许的最大连接数。如果连接池已满,则会壅闭直到有连接空闲出来(如果 blocking=True)。
- mincached:连接池中最少的连接数。初始化时会创建这个数量的连接。如果池中有足够的连接,新的连接请求会直接利用空闲连接。
- maxcached:连接池中最多空闲的连接数。如果高出这个数量,空闲的连接会被烧毁。
- maxshared:连接池中可以共享的最大连接数。在最大共享数达到时,其他请求会排队等候空闲连接。
- blocking:如果 True,当连接池没有可用连接时,步伐会壅闭,直到有连接可用。如果是 False,则会抛出异常。
利用 DBUtils 举行数据库利用
执行插入利用
- conn = pool.connection()
- cursor = conn.cursor()
- try:
- cursor.execute("INSERT INTO your_table (col1, col2) VALUES (%s, %s)", ('value1', 'value2'))
- conn.commit() # 提交事务
- finally:
- cursor.close()
- conn.close()
复制代码 执行更新利用
- conn = pool.connection()
- cursor = conn.cursor()
- try:
- cursor.execute("UPDATE your_table SET col1 = %s WHERE col2 = %s", ('new_value', 'value2'))
- conn.commit() # 提交事务
- finally:
- cursor.close()
- conn.close()
复制代码 异常处置惩罚
利用连接池时,可以通过异常处置惩罚来捕获数据库利用中的错误:
- try:
- conn = pool.connection()
- cursor = conn.cursor()
- cursor.execute("SELECT * FROM your_table")
- result = cursor.fetchall()
- for row in result:
- print(row)
- except Exception as e:
- print(f"An error occurred: {e}")
- finally:
- cursor.close()
- conn.close()
复制代码 长处
- 提高性能:避免了每次数据库利用都建立和关闭连接的开销。
- 淘汰资源斲丧:数据库连接是昂贵的资源,连接池可以重用已建立的连接,淘汰了连接的数量。
- 主动管理:DBUtils 主动管理连接池,帮助你方便地处置惩罚连接的获取和归还。
总结
DBUtils 是一个非常方便的库,可以帮助你在 Python 中高效地管理数据库连接池。通过合理设置连接池的大小、空闲连接数和最大连接数,可以有用提升数据库利用的性能和资源利用率。对于高并发的爬虫、Web 应用等项目非常有用。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |