Python中使用数据库连接池操作数据库

Python中使用数据库连接池操作数据库

配置文件yaml

# mysql config
mysql:
  mysql_conn_host: 'localhost'
  mysql_conn_port: '2105'
  mysql_db_name: 'mrajoedb'
  mysql_db_user: 'root'
  mysql_db_password: 'Tian2334227'
  mysql_db_charset: 'utf8'

配置文件读取

# -*- coding: utf8 -*-

import yaml


dbconfig_file_path = "../config/mysqldb.yaml"


# 读取数据库配置文件
def read_db_config():
    # open方法打开直接读出来
    dbconfig_file = open(dbconfig_file_path, 'r', encoding='utf-8')
    config_file = dbconfig_file.read()
    db_config_dict = yaml.load(config_file)  # 用load方法转字典
    mysql_db_config = db_config_dict['mysql']
    return mysql_db_config


#主方法
if __name__=='__main__':
    # 读取配置文件
    db_config = read_db_config()
    print("数据库配置文件:",db_config['mysql_conn_host'])

引入配置文件读取文件,编写连接池类

# _*- coding: utf8 -*-
import pymysql
from DBUtils.PooledDB import PooledDB
import util.dbconfigReader as dbConfigReader


class PyDruid(object):
    pool = None

    @staticmethod
    def get_db_connection():
        if PyDruid.pool is None:
            db_config = dbConfigReader.read_db_config()
            PyDruid.pool = PooledDB(creator=pymysql,mincached=1, maxcached=20
                                    , host=db_config['mysql_conn_host'], user=db_config['mysql_db_user']
                                    , passwd=db_config['mysql_db_password'], db=db_config['mysql_db_name']
                                    , port=int(db_config['mysql_conn_port']), charset=db_config['mysql_db_charset'])
        return PyDruid.pool.connection()

    @staticmethod
    def init_druid():
        if PyDruid.pool is None:
            db_config = dbConfigReader.read_db_config()
            PyDruid.pool = PooledDB(creator=pymysql, mincached=1, maxcached=20
                                    , host=db_config['mysql_conn_host'], user=db_config['mysql_db_user']
                                    , passwd=db_config['mysql_db_password'], db=db_config['mysql_db_name']
                                    , port=int(db_config['mysql_conn_port']), charset=db_config['mysql_db_charset'])

使用数据库连接池进行数据库操作

# -*- coding: utf8 -*-
import pymysql
import util.dbconfigReader as dbConfigReader
import util.pythonDruid as pyDruid


# 取得数据配置信息
def get_db_config():
    return dbConfigReader.read_db_config()


# 取得mysql连接
def get_mysql_conn():
    return pyDruid.PyDruid.get_db_connection()


# 插入\更新\删除sql
def op_update(sql,params):
    print('执行更新操作:', sql)
    conn = get_mysql_conn()
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    insert_num = cursor.execute(sql, params)
    print('更新操作返回值', insert_num)
    conn.commit()
    cursor.close()
    return insert_num


def op_select(sql,params):
    print('执行查询操作:', sql)
    conn = get_mysql_conn()
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor.execute(sql, params)
    result_data = cursor.fetchall()
    cursor.close()
    return result_data


#主方法
if __name__=='__main__':
    resultData = op_select("select version()",None)
    print(resultData)

运行结果:

D:\SoftWares\anaconda\install\python.exe D:/PyCharmWorkSpace/meituluSpider/util/dbconfigReader.py
数据库配置文件: localhost

Process finished with exit code 0

猜你喜欢

转载自www.cnblogs.com/mrajoe/p/11867523.html