pymysql封装
import pymysql
class MysqlC:
def __init__(self, host, user, password, database):
self.con = None
self.arguments = {
"host": host,
"user": user,
"password": password,
"database": database,
"charset": 'utf8'
}
def post(self, sql):
with self:
try:
data = self.cursor.execute(sql)
self.con.commit()
return data
except Exception as e:
self.con.rollback()
return e
def get(self, sql, one=None):
with self:
try:
self.cursor.execute(sql)
if one:
return self.cursor.fetchone()
else:
return self.cursor.fetchall()
except Exception as e:
return e
def __enter__(self):
if self.con is None:
try:
self.con = pymysql.connect(**self.arguments)
self.cursor = self.con.cursor(pymysql.cursors.DictCursor)
except Exception:
raise "数据库连接失败!"
def __exit__(self, exc_type, exc_val, exc_tb):
self.cursor.close()
self.con.close()
self.con = None
if __name__ == '__main__':
mysql = MysqlC('123', 'root', 'z21', 'white_ip')
w = mysql.get("select * from user")
print(w)
#基于mysql连接池
import pymysql
from dbutils.pooled_db import PooledDB
class MysqlC:
def __init__(self, host, user, password, db):
self.pool = PooledDB(
creator=pymysql, # 使用链接数据库的模块
maxconnections=200, # 连接池允许的最大连接数,0和None表示不限制连接数
mincached=10, # 初始化时,链接池中至少创建的链接,0表示不创建
blocking=True, # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错
ping=0,
host=host,
port=3306,
user=user,
password=password,
database=db,
charset='utf8'
)
def post(self, sql):
with self:
try:
data = self.cursor.execute(sql)
self.con.commit()
return data
except Exception as e:
self.con.rollback()
return e
def get(self, sql, one=None):
with self:
try:
self.cursor.execute(sql)
if one:
return self.cursor.fetchone()
else:
return self.cursor.fetchall()
except Exception as e:
return e
def __enter__(self):
self.con = self.pool.connection()
self.cursor = self.con.cursor(pymysql.cursors.DictCursor)
def __exit__(self, exc_type, exc_val, exc_tb):
self.cursor.close()
self.con.close()
if __name__ == '__main__':
mysql = MysqlC('12193', 'root', 'zb51', 'white_ip')
w = mysql.get("select * from user")
print(w)
```
热爱技术,享受生活,感谢推荐!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?