python 数据库连接池DBUtils
- 0x00 简述
- 0x01 摘要
- 0x02 模块
- 0x03 下载及安装
-
- 1、下载
- 2、安装
- 0x04 SimplePooledDB
- 0x05 SteadyDB
- 0x06 PersistentDB
- 0x07 PooledDB
- 0x08 选择哪一个使用
0x00 简述
DCUtils版本:1.3
python版本:3.7
原文地址:https://webwareforpython.github.io/DBUtils/UsersGuide.html
项目地址:https://github.com/WebwareForPython/DBUtils
0x01 摘要
DBUtils是一组Python模块,允许以安全有效的方式连接线程化的Python应用程序和数据库。DBUtils是以Webware for Python作为应用程序,PyGreSQL作为PostgreSQL数据库的适配器来编写的,但是它可以用于任何其他Python应用程序和符合DB-API 2的数据库适配器。
0x02 模块
DBUtils套件是作为一个Python包实现的,它包含两个模块子集,一个用于任意的DB-API 2模块,另一个用于经典的PyGreSQL模块。
Universal DB-API 2 variant
Universal DB-API 2 variant | |
---|---|
SteadyDB.py | Hardened DB-API 2 connections |
PooledDB.py | Pooling for DB-API 2 connections |
PersistentDB.py | Persistent DB-API 2 connections |
SimplePooledDB.py | Simple pooling for DB-API 2 |
Classic PyGreSQL variant
Classic PyGreSQL variant | |
---|---|
SteadyPg.py | Hardened classic PyGreSQL connections |
PooledPg.py | Pooling for classic PyGreSQL connections |
PersistentPg.py | Persistent classic PyGreSQL connections |
SimplePooledPg.py | Simple pooling for classic PyGreSQL |
通用DB-API 2变体中模块的依赖关系如下图所示:
0x03 下载及安装
1、下载
1、您可以从Python包索引中下载数据库实用程序的实际版本, 址是:
https://pypi.python.org/pypi/DBUtils
2、源码地址:
https://pypi.python.org/pypi/DBUtils
https://github.com/WebwareForPython/DBUtils
2、安装
1、如果您打算使用来自其他应用程序的数据库实用程序,而不是用于Python的Webware,建议您以通常的方式安装该包:
python setup.py install
2、pip安装
pip install DBUtils
3、作为用于Python子包的 络软件安装(插件)
如果您想使用数据库实用程序作为仅适用于 络框架的 络软件的补充,您应该将其作为 络软件插件安装:
python setup.py install-install-lib =/path/to/Webware
替换/path/to/Webware带有您的用于Python安装的Webware根目录的路径。如果还没有这样做,或者如果您想将数据库应用程序文档集成到 络软件文档中,您还需要运行 络软件安装程序:
cd path/to/Webware
python install.py
0x04 SimplePooledDB
DBUtils.SimplePooledDB是池数据库连接的一个非常基本的参考实现。它远没有常规的PooledDB模块那么复杂并且尤其缺乏故障处理能力。DBUtils.SimplePooledDB本质上与MiscUtils.DBPool很相似,都是作为python的 络软件。应该认为这是概念的展示,而不是应该投入生产的东西。
0x05 SteadyDB
DBUtils.SteadyDB是一个与数据库进行“硬化”链接的模块,它基于何DB-API 2数据库模块所建立的普通连接。当一个“硬化的”连接被关闭或数据库连接丢失,或者它被使用的频率超过了可选的使用限制时,它将在访问时透明地重新打开。
一个典型的例子,这是需要的是当数据库被重启,而应用程序仍在运行,并打开的连接到数据库,或当你的应用程序访问远程数据库的 络由防火墙和防火墙已经重启,失去了它的状态。
通常,你不会直接使用SteadyDB模块;它仅仅作为下面两个模块的基础,即PersistentDB和PooledDB。
0x06 PersistentDB
DBUtils.PersistentDB 使用任何数据库API 2数据库模块实现到数据库的稳定的、线程仿射的、持久的连接。
下图显示了使用时所涉及的连接层DBUtils.PersistentDB连接:
如图所示,PooledDB可以在不同的线程之间共享打开的数据库连接。如果您将连接池设置为正值,则默认情况下会发生这种情况maxshared基础数据库API 2在连接级别是线程安全的,但是您也可以请求不会在线程之间共享的专用数据库连接。除了共享连接池之外,您至少还可以建立一个连接池mincached最多maxcached每当线程请求专用数据库连接或共享连接池尚未满时将使用的空闲连接。当一个线程关闭一个不再共享的连接时,它将被返回到中间连接池,以便可以再次回收。
如果底层数据库应用编程接口模块不是线程安全的,线程锁将被用来确保PooledDB连接是线程安全的。因此,您不必担心这个问题,但是无论何时更改数据库会话或执行跨多个SQL命令的事务时,都应该小心使用专用连接。
0x08 选择哪一个使用
两者PersistentDB和PooledDB通过回收数据库连接来提高数据库访问性能,同时即使数据库连接中断也能保持稳定性。
那么你应该使用这两个模块中的哪一个呢以上解释可以清楚地看出持久性数据库如果您的应用程序保持经常使用数据库的线程数量不变,这将更有意义。在这种情况下,您将始终拥有相同数量的开放数据库连接。但是,如果您的应用程序频繁地启动和结束线程,那么使用它会更好PooledDB。后者还允许更多的微调,特别是如果您使用线程安全的数据库API 2模块。
由于这两个模块的接口是相似的,你可以很容易地从一个模块切换到另一个模块,并检查哪一个更适合。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!