当前位置: 首页 > news >正文

mysql使用连接池

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、mysql连接池?
  • 二、使用步骤
    • 1.引入库


前言

提示:这里可以添加本文要记录的大概内容:

例如:


提示:以下是本篇文章正文内容,下面案例可供参考

一、mysql连接池?

安装包 DBUtils
pip install DBUtils==1.3

二、使用步骤

1.引入库

代码如下(示例):

# -*- coding:utf-8 -*-
# author: cai bao jun
# datetime: 2024/3/1 11:38
# @File: 4数据库操作2.pyimport pymysql
from DBUtils.PooledDB import PooledDB
import datetimefrom logger import logger####      DBUtils                       1.3
####      DBUtils                       1.3
####      DBUtils                       1.3class MysqlConfig(object):database = "test2022"  # 测试 trainerNhost = "127.0.0.1"user = "root"port = 3306password = "root"# Mysql数据库相关操作
# @Singleton
class DMLMysql(object):_pool = None_isinstance = None_flag = Truedef __new__(cls, *args, **kwargs):if not cls._isinstance:print('new')cls._pool = PooledDB(creator=pymysql,  # 使用链接数据库的模块mincached=10,  # 初始化时,链接池中至少创建的链接,0表示不创建maxconnections=200,  # 连接池允许的最大连接数,0和None表示不限制连接数blocking=True,  # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错host=MysqlConfig.host,port=MysqlConfig.port,user=MysqlConfig.user,password=MysqlConfig.password,database=MysqlConfig.database,)cls._isinstance = super().__new__(cls)return cls._isinstancedef __init__(self, host=MysqlConfig.host, database=MysqlConfig.database, user=MysqlConfig.user, password=MysqlConfig.password, port=MysqlConfig.port):try:# print('开始链接mysql22332')self.database = databaseself.pool = DMLMysql._poolexcept Exception as e:logger.error(f"database connect error message is {str(e)}")passpassdef open(self):self.conn = self.pool.connection()self.cursor = self.conn.cursor()  # 表示读取的数据为字典类型return self.conn, self.cursordef close(self, cursor, conn):cursor.close()conn.close()def execute_sql(self, sqlQuery, value):""":param sqlQuery: 拼接好的sql语句:param value: 需要拼接的值:return:"""try:conn, cursor = self.open()conn.ping(reconnect=True)  # 超时断开重连cursor.execute(sqlQuery, value)# logger.info('数据执行成功!')except Exception as e:logger.error(f"database name is {self.database} error info is:{str(e)},sql is : {sqlQuery}")conn.rollback()else:conn.commit()finally:self.close(cursor, conn)def select_sql(self,sqlQuery, value):ret = Nonetry:conn, cursor = self.open()conn.ping(reconnect=True)  # 超时断开重连cursor.execute(sqlQuery, value)ret = cursor.fetchall()# logger.info('查询数据执行成功!')except Exception as e:logger.error(f"database name is {self.database} error info is:{str(e)},sql is : {sqlQuery}")# self.conn.rollback()finally:self.close(cursor, conn)return retdef __del__(self):# self.cursor.close()# self.conn.close()# print('关闭mysql22332')passif __name__ == '__main__':dml = DMLMysql()select_sql = 'select author_id,category_id,views from article where id=%s'value = (1,)ret1 = dml.select_sql(sqlQuery=select_sql,value=value)print(ret1)dml1 = DMLMysql()dml2 = DMLMysql()print(id(dml1))print(id(dml2))print(id(dml1)==id(dml2))pass

相关文章:

  • 6、wuzhicms代码审计
  • 【JSON2WEB】07 Amis可视化设计器CRUD增删改查
  • 把简单留给用户,把复杂交给 AI
  • 新形势下第三方支付公司如何盈利
  • 小白学视觉 | 详解遗传算法 GA(Python实现代码)
  • 软件测试测试文档编写
  • 多线程(进阶四:线程安全的集合类)
  • 【JavaSE】时间类相关API以及使用
  • c++基础知识补充4
  • npm install的-S和-D的区别
  • 职业生涯知识回顾-基础篇之网络传输协议
  • Python缩进规则
  • STM32--低功耗模式详解
  • 记一次服务间调用失败的bug
  • Linux内核队列queue.h
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 自己简单写的 事件订阅机制
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • JSONP原理
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • VUE es6技巧写法(持续更新中~~~)
  • vue 配置sass、scss全局变量
  • 大主子表关联的性能优化方法
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 分类模型——Logistics Regression
  • 前嗅ForeSpider教程:创建模板
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 一天一个设计模式之JS实现——适配器模式
  • 【干货分享】dos命令大全
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​人工智能书单(数学基础篇)
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #、%和$符号在OGNL表达式中经常出现
  • #if #elif #endif
  • (0)Nginx 功能特性
  • (二)hibernate配置管理
  • (二)斐波那契Fabonacci函数
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)winform之ListView
  • (转)甲方乙方——赵民谈找工作
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .jks文件(JAVA KeyStore)
  • .NET Core 版本不支持的问题
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .net 反编译_.net反编译的相关问题
  • .NET简谈设计模式之(单件模式)
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .NET值类型变量“活”在哪?
  • [ 数据结构 - C++]红黑树RBTree
  • [\u4e00-\u9fa5] //匹配中文字符
  • [20170728]oracle保留字.txt
  • [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)
  • [Android Studio 权威教程]断点调试和高级调试