1-Python - dbutils

about

官档:https://webwareforpython.github.io/DBUtils/main.html

常见报错

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__":
    ...
posted @ 2023-07-11 21:51  听雨危楼  阅读(244)  评论(0编辑  收藏  举报