在操作数据库时需要使用数据库连接池,可以适当提升性能。
    dbutils依赖pymysql。

    1. pip3.9 install pymysql
    2. pip3.9 install dbutils
    1. import threading
    2. import pymysql
    3. from dbutils.pooled_db import PooledDB
    4. MYSQL_DB_POOL = PooledDB(
    5. creator=pymysql, # 使用链接数据库的模块
    6. maxconnections=5, # 连接池允许的最大连接数,0和None表示不限制连接数
    7. mincached=2, # 初始化时,链接池中至少创建的空闲的链接,0表示不创建
    8. maxcached=3, # 链接池中最多闲置的链接,0和None不限制
    9. blocking=True, # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错
    10. setsession=[], # 开始会话前执行的命令列表。如:["set datestyle to ...", "set time zone ..."]
    11. ping=0,
    12. # ping MySQL服务端,检查是否服务可用。
    13. # 如:0 = None = never, 1 = default = whenever it is requested,
    14. # 2 = when a cursor is created, 4 = when a query is executed, 7 = always
    15. host='127.0.0.1',
    16. port=3306,
    17. user='root',
    18. password='root123',
    19. database='userdb',
    20. charset='utf8'
    21. )
    22. def task():
    23. # 去连接池获取一个连接
    24. conn = MYSQL_DB_POOL.connection()
    25. cursor = conn.cursor(pymysql.cursors.DictCursor)
    26. cursor.execute('select sleep(2)')
    27. result = cursor.fetchall()
    28. print(result)
    29. cursor.close()
    30. # 将连接交换给连接池
    31. conn.close()
    32. def run():
    33. for i in range(10):
    34. t = threading.Thread(target=task)
    35. t.start()
    36. if __name__ == '__main__':
    37. run()