import pymysql.cursors
import datetime
from util.config import *
from DBUtils.PooledDB import PooledDB
class MysqlPool():
__pool = None
host = mysql_host
user = mysql_username
password = mysql_pwd
database = mysql_db
def __enter__(self):
self.conn = self.conn_mysql()
self.cursor = self.conn.cursor()
# print(self.__pool)
# print("PT数据库创建con和cursor");
return self
def __exit__(self, type, value, trace):
self.cursor.close()
self.conn.close()
# print("PT连接池释放con和cursor");
def conn_mysql(self):
if self.__pool is None:
self.__pool = PooledDB(
creator=pymysql,
maxconnections=6, # 连接池允许的最大连接数,0和None表示不限制连接数
mincached=2, # 初始化时,链接池中至少创建的空闲的链接,0表示不创建
maxcached=5, # 链接池中最多闲置的链接,0和None不限制
maxshared=3,
blocking=True, # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错
maxusage=None, # 一个链接最多被重复使用的次数,None表示无限制
setsession=[], # 开始会话前执行的命令列表。如:["set datestyle to ...", "set time zone ..."]
ping=0,
host=self.host,
port=3306,
user=self.user,
password=self.password,
database=self.database,
charset='utf8mb4'
)
try:
return self.__pool.connection()
except KeyboardInterrupt:
print(" Ctrl-c conectpool stop...")
except:
print('get connectpool error')
return None
class MysqlSelect():
"""
mysql数据库操作
"""
def __init__(self):
self.conn = MysqlPool()
def insert_elect(self, equip_code, equip_data):
"""
更新设备数据
:return:
"""
create_time = datetime.datetime.now()
sql = (
"insert into equip_data(type,equip_code,equip_data,create_time)"
" values(%s,%s,%s,%s)")
with self.conn as db:
db.cursor.execute(sql, ('electricity', equip_code, equip_data, create_time))
db.conn.commit()
if __name__ == '__main__':
pass
python mysql连接池脚本
最新推荐文章于 2024-05-25 11:00:17 发布