日日行,不怕千万里;常常做,不怕千万事|

__username

园龄:2年4个月粉丝:12关注:2

2023-05-05 16:44阅读: 13评论: 0推荐: 0

数据库连接池

数据库连接池

# @author: zhc
# @Time: 2023/5/5
# @FileName: 数据库连接池
# pip install PyMySQL , pip install DBUtils==1.3
import pymysql
from DBUtils.PooledDB import PooledDB
POOL = PooledDB(
creator=pymysql, # 使用链接数据库的模板
maxconnections=6,
mincached=2,
# maxcached=5,
# maxshared=3,
blocking=True,
# maxusage=None,
# setsession=[],
# ping=0,
host='127.0.0.1',
port=3306,
user='root',
password='p@ss0rd',
# database='pooldb',
database='cov',
charset='utf8'
)
# 去连接池中获取一个连接
conn = POOL.connection()
cursor = conn.cursor()
cursor.execute('select * from drug')
result = cursor.fetchall()
cursor.close()
# 讲连接放回到连接池
conn.close()
print(result)

多线程测试

# @author: zhc
# @Time: 2023/5/5
# @FileName: 数据库连接池
# pip3 install PyMySQL , pip install DBUtils==1.3
import pymysql
from threading import Thread
from DBUtils.PooledDB import PooledDB
POOL = PooledDB(
creator=pymysql, # 使用链接数据库的模板
maxconnections=6,
mincached=2,
# maxcached=5,
# maxshared=3,
blocking=True,
# maxusage=None,
# setsession=[],
# ping=0,
host='127.0.0.1',
port=3306,
user='root',
password='p@ss0rd',
# database='pooldb',
database='cov',
charset='utf8'
)
def task(num):
# 去连接池中获取一个连接
conn = POOL.connection()
cursor = conn.cursor()
# cursor.execute('select * from drug')
cursor.execute('select sleep(3)')
result = cursor.fetchall()
cursor.close()
# 讲连接放回到连接池
conn.close()
print(num, "-------------->", result)
for i in range(57):
t = Thread(target=task, args=(i,))
t.start()

函数实现sqlhelper

# @author: zhc
# @Time: 2023/5/5
# @FileName: sqlhelper
import pymysql
from DBUtils.PooledDB import PooledDB
POOL = PooledDB(
creator=pymysql, # 使用链接数据库的模板
maxconnections=6,
mincached=2,
# maxcached=5,
# maxshared=3,
blocking=True,
# maxusage=None,
# setsession=[],
# ping=0,
host='127.0.0.1',
port=3306,
user='root',
password='p@ss0rd',
# database='pooldb',
database='cov',
charset='utf8'
)
def fetchall(sql, *args):
"""获取所有数据"""
# 去连接池中获取一个连接
conn = POOL.connection()
cursor = conn.cursor()
cursor.execute(sql, args)
result = cursor.fetchall()
cursor.close()
conn.close()
return result
def fetchone(sql, *args):
"""获取单条数据"""
# 去连接池中获取一个连接
conn = POOL.connection()
cursor = conn.cursor()
cursor.execute(sql, args)
result = cursor.fetchone()
cursor.close()
conn.close()
return result

单例模式

# @author: zhc
# @Time: 2023/5/5
# @FileName: sqlhelper2
import pymysql
from DBUtils.PooledDB import PooledDB
class SqlHelper:
def __init__(self):
self.pool = PooledDB(
creator=pymysql, # 使用链接数据库的模板
maxconnections=6,
mincached=2,
blocking=True,
host='127.0.0.1',
port=3306,
user='root',
password='p@ss0rd',
# database='pooldb',
database='cov',
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(cursor, conn)
return result
def fetchone(self, sql, *args):
"""获取单条数据"""
# 去连接池中获取一个连接
conn, cursor = self.__open()
cursor.execute(sql, args)
result = cursor.fetchone()
self.__close(cursor, conn)
return result
db = SqlHelper()
posted @   __username  阅读(13)  评论(0编辑  收藏  举报

本文作者:DIVMonster

本文链接:https://www.cnblogs.com/guangzan/p/12886111.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起