使用資料庫連線池技術,可以重複使用多個資料庫連線,避免每次執行資料庫操作都建立連線和關閉連線,也避免了大型應用同時占用多個資料庫連線。
以連線mysql為例
import pymysql
from dbutils.pooleddb import pooleddb
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='******',
database='test',
charset='utf8'
)def
func
(): conn = pool.connection() #從連線池中獲取乙個連線
cursor = conn.cursor()
cursor.execute('select * from students')
result = cursor.fetchall()
conn.close() # 把連線放回連線池中
print(result)
if __name__ == '__main__':
func()
參考
DBUtils資料庫連線池
使用資料庫連線池技術,可以重複使用多個資料庫連線,避免每次執行資料庫操作都建立連線和關閉連線,也避免了大型應用同時占用多個資料庫連線。以連線mysql為例 import pymysql from dbutils.pooleddb import pooleddb pool pooleddb creat...
Python資料庫連線池DBUtils
dbutils是python的乙個用於實現資料庫連線池的模組。此連線池有兩種連線模式 如果沒有連線池,使用pymysql來連線資料庫時,單執行緒應用完全沒有問題,但如果涉及到多執行緒應用那麼就需要加鎖,一旦加鎖那麼連線勢必就會排隊等待,當請求比較多時,效能就會降低了。usr bin env pyth...
資料庫連線池和DBUtils
dbcp資料來源連線池 dbcp配置檔案的使用 c3p0資料來源 c3p0資料庫配置檔案使用 dbutils工具 resultsethandler介面 dbutils的 過程 dbutils的 實現 當使用jdbc連線資料庫的時候,當有1000的使用者,你就要建立1000會連線物件和銷毀物件,這樣會...