python常用库之DBUtils(连接池方式连接数据库)

python常用库之DBUtils(连接池方式连接数据库)

什么是DBUtils

官网:https://webwareforpython.github.io/DBUtils/
官方pip:https://pypi.org/search/?q=DBUtils

Dbutils是一套工具,可为数据库提供可靠,持久和汇总的连接,该连接可在各种多线程环境中使用。

该套件支持DB-API 2兼容的数据库接口和经典的PygresQL接口。

当前版本3.0.3的Dbutils支持Python版本3.6至3.11。

使用场景

如果您使用的是流行的对象关系映射器SQLObject 或SQLAlchemy之一,则不需要 DBUtils,因为它们带有自己的连接池。SQLObject 2 (SQL-API) 实际上是从 DBUtils 中借用了一些代码,将池化分离到一个单独的层中。

安装和使用

pip install DBUtils

本文安装测试的版本DBUtils-3.0.3

示例

import pymysql
from dbutils.pooled_db import PooledDB

# 定义连接参数
pool = PooledDB(
    creator=pymysql,
    maxconnections=6,
    mincached=2,
    maxcached=5,
    blocking=True,
    host='localhost',
    user='root',
    passwd='123456',
    db='mydb',
    port=3306,
    charset='utf8mb4'
)

# 从连接池获取连接
conn = pool.connection()
cursor = conn.cursor()

以 pymysql 为例子,先定义了连接池的配置参数,然后调用 pool.connection() 方法从连接池中获取一个连接,再使用这个连接创建一个游标对象 cursor。

# 执行 SQL 语句
sql = "SELECT * FROM students"
cursor.execute(sql)
result = cursor.fetchall()

# 处理查询结果
for row in result:
    print(row)

# 关闭游标和连接
cursor.close()
conn.close()

使用后,我们需要显式地关闭游标和连接,以便将资源释放回连接池。

高级用法

有时您可能希望在 DBUtils 使用连接之前准备好连接,而仅使用正确的参数是不可能做到的。例如,pyodbc可能需要通过调用连接的setencoding()方法来配置连接。您可以通过将修改后的connect()函数作为 创建者(第一个参数)传递给PersistentDB或PooledDB来实现,如下所示:

from pyodbc import connect 
from dbutils.pooled_db import PooledDB 

def creator(): 
    con = connect(...) 
    con.setdecoding(...)
    返回 con 

creator.dbapi = pyodbc 

db_pool = PooledDB(creator, mincached=5)

猜你喜欢

转载自blog.csdn.net/inthat/article/details/131314367