Mysql数据库连接池组件封装(Python篇)

以前一直在用Java来开发,数据库连接池等都是有组件封装好的,直接使用即可,最近在尝试Python的学习,碰到了和数据库打交道的问题,和数据库打交道我们都知道,数据库连接池必不可少,不然要么就是程序异常不稳定,要么就是数据库莫名其妙挂了,

本篇博客主要是对数据库操作的简单封装,相当于一个DBHelper操作类

组件

Python中的数据库连接操作所需组件

  • pymysql:mysql的Python连接包
  • DBUtils:连接池组件
  • configparser:配置文件模块
  • mysql-connector-python:驱动包

以上模块都是必装组件,使用pip很轻松就安装

开始

组件的封装主要考虑到多种数据库、可配置的情况,因此我们的数据库相关信息不能使用硬编码的方式,需要将数据库放到配置文件中,这样和代码会有一个解耦,也不用频繁更改代码

代码

封装的类主要包含的基础方法:

  • 提供查询的方法
  • 分页查询的方法
  • 插入数据
  • 删除数据
  • 更新数据
  • 批量插入、删除、更新数据

配置文件

将数据库的相关信息写入db.conf配置文件中,配置文件如下:

[master]
# 数据库连接主机
host=192.168.0.212
# 数据库端口号
port=3306
# 用户名
user=root
# 密码
password=123456
# 数据库名称
database=test
# 数据库连接池最大连接数
maxconnections=20
# 数据库连接池最小缓存数
mincached=5
# 数据库连接池最大缓存数
maxcached=10

[local111]
# 数据库连接主机
host=192.168.0.111
# 数据库端口号
port=3306
# 用户名
user=root
# 密码
password=123456
# 数据库名称
database=test
# 数据库连接池最大连接数
maxconnections=20
# 数据库连接池最小缓存数
mincached=5
# 数据库连接池最大缓存数
maxcached=10

数据库的配置可以是多个,我们可以配置多个数据源,然后在代码中方便使用

MySQLConnection

数据库封装类MySQLConnection.py,代码如下:

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
#!@File    :   database.py
#!@Time    :   2019/9/23 21:57
#!@Author  :   xiaoyumin
#!@Version :   1.0
#!@Contact :   xiaoymin@foxmail.com
#!@License :   Copyright (C) 2018 Zhejiang xiaominfo Technology CO.,LTD.
#!@Desc    :   数据库连接池相关
import pymysql
from DBUtils.PooledDB import PooledDB
import logging
import configparser

# 读取数据库配置信息
config=configparser.ConfigParser()
config.read('../db.conf',encoding='UTF-8')
sections=config.sections()
# 数据库工厂
dbFactory={
   }
for dbName in sections:
    # 读取相关属性
    maxconnections=config.get(dbName,"maxconnections")
    mincached=config.get(dbName,"mincached")
    maxcached=config.get(dbName,"maxcached")
    host=config.get(dbName,"host")
    port=config.get(dbName,"port")
    user=config.get(dbName,"user")
    password=config.get(dbName,"password")
    database=config.get(dbName,"database")
    databasePooled=PooledDB(creator=pymysql,
                        maxconnections=int(maxconnections),
                        mincached=int(mincached),
                        maxcached=int(maxcached),
                        blocking=True,
                        cursorclass = pymysql.cursors.DictCursor,
                        host=host,
                        port=int(port),
                        user=user,
                        password=password,
                        database=database)
    dbFactory[dbName]=databasePooled

class MySQLConnection(object):
    """
    数据库连接池代理对象
    查询参数主要有两种类型
    第一种:传入元祖类型,例如(12,13),这种方式主要是替代SQL语句中的%s展位符号
    第二种: 传入字典类型,例如{"id":13},此时我们的SQL语句需要使用键来代替展位符,例如:%(name)s
    """
    def __init__(self,dbName=
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值