【云圖說】第235期 DDS讀寫兩步走 帶您領略只讀節(jié)點的風采
983
2025-04-01
每次執(zhí)行一個sql的時候都單獨建立一個mysql連接,執(zhí)行完就close掉,很明顯這樣的問題在于,頻繁連接,斷開mysql,這樣是相當消耗系統(tǒng)資源的,而且增加了mysql連接失敗的幾率,所以萬一哪個線程沒有連接成功 這個線程也over了。
連接池原理
在程序創(chuàng)建連接的時候,可以從一個空閑的連接中獲取,不需要重新初始化連接,提升獲取連接的速度
關閉連接的時候,把連接放回連接池,而不是真正的關閉,所以可以減少頻繁地打開和關閉連接
安裝
pip install DBUtils
1
-:https://pypi.org/project/DBUtils/
參數(shù)解釋:
creator, # 使用鏈接數(shù)據(jù)庫的模塊 mincached=0, # 初始化時,鏈接池中至少創(chuàng)建的空閑的鏈接,0表示不創(chuàng)建 maxcached=0, # 鏈接池中最多閑置的鏈接,0和None不限制 maxshared=0, # 鏈接池中最多共享的鏈接數(shù)量,0和None表示全部共享。PS: 無用,因為pymysql和MySQLdb等模塊的threadsafety都為1,所有值無論設置為多少,_maxcached永遠為0,所以永遠是所有鏈接都共享。 maxconnections=0, # 連接池允許的最大連接數(shù),0和None表示不限制連接數(shù) blocking=False, # 連接池中如果沒有可用連接后,是否阻塞等待。True,等待;False,不等待然后報錯 maxusage=None, # 一個鏈接最多被重復使用的次數(shù),None表示無限制 setsession=None, # 開始會話前執(zhí)行的命令列表。如:["set datestyle to ...", "set time zone ..."] reset=True, failures=None, ping=1, # 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 # 數(shù)據(jù)庫設置,同pymysql host='localhost', port=3306, db='mydata', user="root", passwd="123456", charset='utf8'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
代碼示例
# -*- coding: utf-8 -*- # @File : dbutils_demo.py # @Date : 2018-08-15 # @Author : Peng Shiyu import pymysql from DBUtils.PooledDB import PooledDB pool = PooledDB( creator=pymysql, # 使用鏈接數(shù)據(jù)庫的模塊 host='localhost', port=3306, db='mydata', user="root", passwd="123456", charset='utf8' ) class Connect(object): def __init__(self, pool_obj): self.conn = pool_obj.connection() self.cursor = self.conn.cursor() def execute(self, query, args=None): self.cursor.execute(query, args) return self.cursor.fetchall() def __del__(self): self.cursor.close() self.conn.close() if __name__ == '__main__': con = Connect(pool) sql = "show tables" ret = con.execute(sql) print(len(ret))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
參考:
Python-DBUtils 使用MySql數(shù)據(jù)庫連接池提升效率
Python 數(shù)據(jù)庫
版權聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權內(nèi)容。
版權聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權內(nèi)容。