相关文章推荐
不敢表白的小马驹  ·  【xlwings ...·  8 月前    · 
痴情的篮球  ·  TypeError: ...·  1 年前    · 

导包什么的都没问题,但是就是报错,这个问题其实是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__":