python 数据库连接池
""" 数据库连接工具类 # """ import pymysql from dbutils.pooled_db import PooledDB,SharedDBConnection from dbutils.persistent_db import PersistentDB,PersistentDBError,NotSupportedError from commondb_config import * host=siem.get("database_url") config = { 'host': '127.0.0.1', 'port': 3306, 'database': 'TEST', 'user': 'XXX', 'password': 'XXXX', 'charset': 'utf8' } config.update({"host":host}) def get_db_pool(is_mult_thread): if is_mult_thread: poolDB = PooledDB( # 指定数据库连接驱动 creator=pymysql, # 连接池允许的最大连接数,0和None表示没有限制 maxconnections=3, # 初始化时,连接池至少创建的空闲连接,0表示不创建 mincached=2, # 连接池中空闲的最多连接数,0和None表示没有限制 maxcached=5, # 连接池中最多共享的连接数量,0和None表示全部共享(其实没什么卵用) maxshared=3, # 连接池中如果没有可用共享连接后,是否阻塞等待,True表示等等, # False表示不等待然后报错 blocking=True, # 开始会话前执行的命令列表 setsession=[], # ping Mysql服务器检查服务是否可用 ping=0, **config ) else: poolDB = PersistentDB( # 指定数据库连接驱动 creator=pymysql, # 一个连接最大复用次数,0或者None表示没有限制,默认为0 maxusage=1000, **config ) return poolDB if __name__ == '__main__': # 以单线程的方式初始化数据库连接池 db_pool = get_db_pool(False) # 从数据库连接池中取出一条连接 conn = db_pool.connection() cursor = conn.cursor() # 随便查一下吧 cursor.execute('select * from books') # 随便取一条查询结果 result = cursor.fetchone() print(result) # 把连接返还给连接池 conn.close()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)