创建数据库连接池的函数

def create_pool(*args, **kw): # 定义内部函数,用于创建连接池 def _create_pool(db_ip = None, db_port = 0, db_sid = None, db_user = None, db_passwd = None, db_connect = 1, dbpool_size = 1, db_type = 'oracle', max_overflow = 0): _pool = None db_type = db_type.lower() # 将数据库类型转换为小写

    # 判断是否禁用连接池
    if db_connect == 1:
        params = {'poolclass':NullPool}
        log.info('DB pool connect is disabled')
    else:
        params = {'pool_size':dbpool_size, 'max_overflow':max_overflow}
        log.info('DB pool connect size is {}, overflow is {}'.format(dbpool_size, max_overflow))

    # 根据不同数据库类型创建连接池
    if db_type == 'oracle':
        import cx_Oracle as dbModule # 导入Oracle数据库驱动
        _pool = dbPoolManager(dbModule, **params)
        connstr = '{}:{}/{}'.format(db_ip, db_port, db_sid)
        _pool.set_connect(db_user, db_passwd, connstr, threaded = True) # 设置连接参数
    elif db_type == 'mssql':
        import pyodbc as dbModule # 导入Microsoft SQL Server数据库驱动
        _pool = dbPoolManager(dbModule, **params)
        connstr = 'DRIVER={{SQL Server}};SERVER={};port={};DATABASE={};UID={};PWD={};TDS_Version=8.0'.format(
            db_ip, db_port, db_sid, db_user,
            db_passwd)
        _pool.set_connect(connstr, unicode_results=True) # 设置连接参数
    elif db_type == 'mysql':
        import MySQLdb as dbModule # 导入MySQL数据库驱动
        _pool = dbPoolManager(dbModule, **params)
        _pool.set_connect(host=db_ip,
                          port=db_port,
                          user=db_user,
                          passwd=db_passwd,
                          db=db_sid,
                          charset='utf8'
                          ) # 设置连接参数

    # 如果有缓存数据库,则创建缓存连接池
    if cache_ip and cache_port and cache_user and cache_passwd and cache_db:
        import redis as dbModule # 导入Redis数据库驱动
        cache_pool = dbPoolManager(dbModule, **params)
        cache_pool.set_connect(host=cache_ip,
                               port=cache_port,
                               user=cache_user,
                               passwd=cache_passwd,
                               db=cache_db,
                               charset='utf8'
                               ) # 设置连接参数
        setattr(_pool, 'cache_pool', cache_pool) # 将缓存连接池设置为连接池的属性

    # 设置数据库异常类
    DatabaseException.DatabaseError = dbModule.DatabaseError
    return _pool

函数的参数说明:

*args 表示任意数量的无名参数

**kw 表示任意数量的关键字参数

db_ip 表示数据库IP地址

db_port 表示数据库端口号

db_sid 表示数据库SID

db_user 表示数据库用户名

db_passwd 表示数据库密码

db_connect 表示是否启用连接池

dbpool_size 表示连接池大小

db_type 表示数据库类型,可选值为'oracle'、'mssql'、'mysql'

max_overflow 表示连接池中最多容纳的连接数

cache_ip 表示缓存数据库IP地址

cache_port 表示缓存数据库端口号

cache_user 表示缓存数据库用户名

cache_passwd 表示缓存数据库密码

cache_db 表示缓存数据库名称

Python 创建数据库连接池函数 - 支持 Oracle, MSSQL, MySQL 和 Redis 缓存

原文地址: https://www.cveoy.top/t/topic/nuF1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录