首页 > 数据库 >数据库连接池

数据库连接池

时间:2023-04-05 18:11:45浏览次数:40  
标签:__ exc 数据库 连接池 cursor conn self def

上下文管理和SQLHelper

import pymysql
from DBUtils.PooledDB import PooledDB

class SqlHelper(object):
    def __init__(self):
        self.pool = PooledDB(
            creator=pymysql,  # 使用链接数据库的模块
            maxconnections=6,  # 连接池允许的最大连接数,0和None表示不限制连接数
            mincached=2,  # 初始化时,链接池中至少创建的链接,0表示不创建
            blocking=True,  # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错
            ping=0,
            # ping MySQL服务端,检查是否服务可用。# 如:0 = None = never, 1 = default = whenever it is requested, 2 = when a cursor is created, 4 = when a query is executed, 7 = always
            host='127.0.0.1',
            port=3306,
            user='root',
            password='222',
            database='cmdb',
            charset='utf8'
        )

    def open(self):
        conn = self.pool.connection()
        cursor = conn.cursor()
        return conn,cursor

    def close(self,cursor,conn):
        cursor.close()
        conn.close()

    def fetchall(self,sql, *args):
        """ 获取所有数据 """
        conn,cursor = self.open()
        cursor.execute(sql, args)
        result = cursor.fetchall()
        self.close(conn,cursor)
        return result

    def fetchone(self,sql, *args):
        """ 获取所有数据 """
        conn, cursor = self.open()
        cursor.execute(sql, args)
        result = cursor.fetchone()
        self.close(conn, cursor)
        return result

    def __enter__(self):
        return self.open()[1]

    def __exit__(self, exc_type, exc_val, exc_tb):
        print(exc_type, exc_val, exc_tb)


db = SqlHelper()

标签:__,exc,数据库,连接池,cursor,conn,self,def
From: https://www.cnblogs.com/jzm123/p/17290157.html

相关文章

  • flask蓝图/G对象/连接数据库/
    蓝图使用中大型项目推进使用蓝图来构建文件目录1.导入蓝图类fromflaskimportBlueprint2.实例化得到蓝图对象order_bp=Blueprint('order',name)3.在app中注册蓝图app.register_blueprint(order_bp)4.在不同的views.py使用蓝图注册路由@order_bp.route('/order')目......
  • Scrapy爬虫框架 -- Mysql数据库存储数据
    一、新建一个项目scrapystartprojectmyslqst二、进入到项目目录并增加爬虫文件xiaohuacd.\myslqst\scrapygenspiderxiaohuawww.xxx.com三、修改配置文件,并开启管道存储ROBOTSTXT_OBEY=FalseLOG_LEVEL='ERROR'USER_AGENT="Mozilla/5.0(WindowsNT10.0;Win64;x64)......
  • INFS3200 先进数据库系统
    INFS3200AdvancedDatabaseSystemsPrac2:DataWarehousing(5%)Semester1,2023Duetime:4:00pm,Friday,21April2023(Week8)Submission:Submityourworkonline(INFS3200CourseWebsite)1.Introduction1.1LearningobjectivesLearnhowtocreateacubean......
  • Linux安装mysql数据库
    1.下载路径:https://dev.mysql.com/downloads/2.上传解压#tar-xvfMySQL-5.6.26-1.linux_glibc2.5.x86_64.rpm-bundle.tar3.安装#rpm-ivhMySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm--nodeps#rpm-ivhMySQL-client-5.6.26-1.linux_glibc2.5.x86_64.rpm--no......
  • Redis 数据库的哨兵模式
    1.哨兵模式1.1哨兵模式的结构和作用哨兵(Sentinel)是Redis官方提供的一种高可用方案,它可以监控多个Redis服务实例的运行情况。本质上,Sentinel也是一个运行在特殊模式下的Redis服务器。主从复制模式下,一般会配置多个Sentinel节点,通过互相协作来实现系统的高可用。......
  • Redis 数据库的主从复制
    1.主从复制1.1什么是主从复制主从复制,是将多台数据库服务器分为主节点(master)和从节点(slaver),主节点数据更新后会根据配置和策略,自动同步到从节点上,从而保证主从节点中存有相同的数据。 1.2主从复制的作用有了主从复制,数据可以有多份副本,这就带来了很多好处:(1)提升......
  • Docker 下 Redis 数据库的持久化
    1、Docker容器的数据卷Docker是将系统与运行的环境打包成容器来运行,当容器删除后,容器里的系统自然也就没有了。但是,在实际的项目中,希望Docker容器产生的数据能够持久化,同时容器之间也能够共享数据。Docker提供了数据卷技术来实现这些需求。数据卷就是目录或文件,存......
  • Redis 数据库的持久化
    1、Redis持久化1.1什么是持久化持久化可以理解为数据的永久存储,就是将数据存储到一个不会丢失的地方。如果把数据放在内存中,电脑关闭或重启数据就会丢失,所以放在内存中的数据不是持久化的,而放在磁盘就是一种持久化。 1.2Redis的持久化Redis的数据存储在内存......
  • Redis 数据库的事务机制
    1、Redis事务机制1.1事务的定义事务是指一系列操作数据库的步骤,这一系列的操作步骤,要么完全地执行,要么完全地不执行。 1.2Redis的事务同样,Redis中的事务也是一组命令的集合,至少是两个或两个以上的命令。Redis事务是一个单独的隔离操作,事务中的所有命令都会序......
  • 蓝图的使用、g对象、数据库连接池
    蓝图的使用#blueprint翻译过来的,称之为蓝图#作用是:之前全在一个py中写flask项目,后期肯定要划分目录#不用蓝图,划分目录no_blueprint_flask#项目名src#核心源码位置__init__.py#包里面实例化得到了app对象,mode......