1. 程式人生 > >DBUtil 配置數據庫連接池

DBUtil 配置數據庫連接池

數據庫連接 hal time pass 查看 命令 share urn font

DBUtils:
import pymysql

from DBUtils.PooledDB import PooledDB, SharedDBConnection

# 定義POOL連接池
POOL = PooledDB(
    creator=pymysql,  # 使用鏈接數據庫的模塊
    maxconnections=6,  # 連接池允許的最大連接數,0和None表示不限制連接數
    mincached=2,  # 初始化時,鏈接池中至少創建的空閑的鏈接,0表示不創建
    maxcached=5,  # 鏈接池中最多閑置的鏈接,0和None不限制
    maxshared=3,
    
# 鏈接池中最多共享的鏈接數量,0和None表示全部共享。PS: 無用,因為pymysql和MySQLdb等模塊的 threadsafety都為1,所有值無論設置為多少,_maxcached永遠為0,所以永遠是所有鏈接都共享。 blocking=True, # 連接池中如果沒有可用連接後,是否阻塞等待。True,等待;False,不等待然後報錯 maxusage=None, # 一個鏈接最多被重復使用的次數,None表示無限制 setsession=[], # 開始會話前執行的命令列表。如:["set datestyle to ...", "set time zone ..."]
ping=0, # ping MySQL服務端,檢查是否服務可用。# 如:0 = None = never, 1 = default = whenever it is requested, 2 = when a cursor is created, 4 = when a query is executed, 7 = always host=127.0.0.1, port=3306, user=root, password=123, database=db_conn, charset=utf8 )
def func(): conn = POOL.connection() cursor = conn.cursor(pymysql.cursors.DictCursor) cursor.execute(select * from user) result = cursor.fetchall() # print(result) # print(list(result)) cursor.close() conn.close()

使用連接池的增刪改查
技術分享圖片
from DB_Demo import db_conn
import pymysql


# 創建打開連接池的函數
def open_conn():
    conn = db_conn.POOL.connection()
    cur = conn.cursor(pymysql.cursors.DictCursor)
    return conn, cur


# 關閉連接池的函數
def close_conn(cur, conn):
    cur.close()
    conn.close()


# 查看表的所有信息
def select_all(sql, args):
    conn, cur = open_conn()
    cur.execute(sql, args)
    result = cur.fetchall()
    close_conn(cur, conn)
    return result


# 插入表函數
def insert_help(sql, args):
    conn, cur = open_conn()
    cur.execute(sql, args)
    result = conn.commit()
    close_conn(cur, conn)
    return result
View Code



DBUtil 配置數據庫連接池