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