栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python连接MySQL -- 使用连接池

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python连接MySQL -- 使用连接池

代码
# -*- coding: utf-8 -*-
#  @Author  : markadc


import pymysql
from dbutils.pooled_db import PooledDB


class MysqlConnectionPool:

    # mark为True,查询语句的返回结果为dict
    def __init__(self, cfg, mark=False):
        self.pool = PooledDB(pymysql, **cfg)
        self.mark = mark

    # 获取连接、游标
    def get_conn_curs(self):
        conn = self.pool.connection()
        curs = conn.cursor(pymysql.cursors.DictCursor) if self.mark else conn.cursor()
        return conn, curs

    # 关闭游标、连接
    def close_conn_curs(self, curs, conn):
        curs.close()
        conn.close()

    # 执行sql
    def exe_sql(self, sql, args=None, way=None):
        conn, curs = self.get_conn_curs()
        try:
            curs.execute(sql, args=args)
            conn.commit()
        except Exception as e:
            conn.rollback()
            print("error  >>  exe_sql>  >>  {}".format(e))
            return False
        else:
            if way == 1:
                return curs.fetchone()
            elif way == 2:
                return curs.fetchall()
            else:
                return True
        finally:
            self.close_conn_curs(curs, conn)
            

使用示例
if __name__ == '__main__':
    cfg = {
        'host': 'localhost',
        'port': 3306,
        'user': 'root',
        'passwd': 'Chinais9?',
        'charset': 'utf8mb4',

        'maxconnections': 10,  # 连接池允许的最大连接数
        'mincached': 2,  	   # 初始化连接池时创建的连接数。默认为0,即初始化时不创建连接
        'maxcached': 0,        # 连接池中空闲连接的最大数量。默认0,即无最大数量限制
        'maxusage': 5,         # 连接的最大使用次数。默认0,即无使用次数限制
        'blocking': True       # 连接数达到最大时,新连接是否可阻塞。默认False,即达到最大连接数时,再取新连接将会报错
    }

    handler = MysqlConnectionPool(cfg)
    result = handler.exe_sql('show databases', way=2)
    print(result)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997971.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号