1-Python - dbutils
about
常见报错
ModuleNotFoundError: No module named 'DBUtils'
Python3.10 + DBUtils3.0.3
如果你的代码报了如下错误:
导包什么的都没问题,但是就是报错,这个问题其实是DBUtils的版本升级引起的。
经过我自己的测试,从DBUtils2.0版本开始,按照上面的导包方式,就会出现报错。而DBUtils1.x版本,如1.4版本就不会出现这个问题。
所以,解决办法有两个,第一种,将DBUtils降级到1.x,然后按照上面截图的方式就不会出现问题。
pip uninstall DBUtils -y
pip install DBUtils==1.4
第二种就是,DBUtils不降级,而是调整导包方式:
import pymysql
# DBUtils1.x版本可以用下面的导包方式
# from DBUtils.PooledDB import PooledDB
# DBUtils2.0开始可以用下面的导包方式
from dbutils.pooled_db import PooledDB
class DBHelper(object):
def __init__(self):
self.pool = PooledDB(
creator=pymysql, # 使用连接数据库的模块
maxconnections=5, # 连接池允许的最大连接数,0和None表示不限制
mincached=2, # 初始化时,连接池中至少创建的空闲的连接,0表示不创建
maxcached=3, # 连接池中最多闲置的连接,0和None不限制
blocking=True, # 连接池中如果没有可用连接后,是否阻塞等待,True等待,False 不等待然后报错
setsession=[], # 开始会话前执行的命令列表,如...
ping=0,
host='127.0.0.1',
port=3306,
user='root',
password="123",
database='blog1',
charset='utf8'
)
def get_conn_cursor(self):
conn = self.pool.connection()
cursor = conn.cursor(pymysql.cursors.DictCursor)
return conn, cursor
db = DBHelper()
if __name__ == "__main__":
...