""" 數據庫連接工具類 # """ import pymysql from dbutils.pooled_db import PooledDB,SharedDBConnection from dbutils.persistent_db import PersistentDB,PersistentDBError,NotSupportedError from commondb_config import * host=siem.get("database_url") config = { 'host': '127.0.0.1', 'port': 3306, 'database': 'TEST', 'user': 'XXX', 'password': 'XXXX', 'charset': 'utf8' } config.update({"host":host}) def get_db_pool(is_mult_thread): if is_mult_thread: poolDB = PooledDB( # 指定數據庫連接驅動 creator=pymysql, # 連接池允許的最大連接數,0和None表示沒有限制 maxconnections=3, # 初始化時,連接池至少創建的空閒連接,0表示不創建 mincached=2, # 連接池中空閒的最多連接數,0和None表示沒有限制 maxcached=5, # 連接池中最多共享的連接數量,0和None表示全部共享(其實沒什麼卵用) maxshared=3, # 連接池中如果沒有可用共享連接後,是否阻塞等待,True表示等等, # False表示不等待然後報錯 blocking=True, # 開始會話前執行的命令列表 setsession=[], # ping Mysql服務器檢查服務是否可用 ping=0, **config ) else: poolDB = PersistentDB( # 指定數據庫連接驅動 creator=pymysql, # 一個連接最大複用次數,0或者None表示沒有限制,默認爲0 maxusage=1000, **config ) return poolDB if __name__ == '__main__': # 以單線程的方式初始化數據庫連接池 db_pool = get_db_pool(False) # 從數據庫連接池中取出一條連接 conn = db_pool.connection() cursor = conn.cursor() # 隨便查一下吧 cursor.execute('select * from books') # 隨便取一條查詢結果 result = cursor.fetchone() print(result) # 把連接返還給連接池 conn.close()