python常用库之DBUtils(连接池方式连接数据库)
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)
更多推荐
已为社区贡献25条内容
所有评论(0)