這篇文章主要介紹“怎么創建python數據庫連接池”,在日常操作中,相信很多人在怎么創建python數據庫連接池問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么創建python數據庫連接池”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
1、不使用數據庫連接池,每次操作都要鏈接數據庫,鏈接次數過多
conn = pymysql.connect(host="127.0.0.1",port=3306,user='root',password='123', database='pooldb',charset='utf8') cursor = conn.cursor() cursor.execute("select * from td where id=%s", [5, ]) result = cursor.fetchall() # 獲取數據 cursor.close() conn.close() # 關閉鏈接
這種方式每次請求,反復創建數據庫鏈接,多次鏈接數據庫會非常耗時
2、創建一個鏈接池,為所有線程提供連接,使用時來進行獲取,使用完畢后在放回到連接池。
PS:假設大鏈接數有10個,其實也就是一個列表,當你pop一個,系統會再append一個,鏈接池的所有的鏈接都是按照排隊的這樣的方式來鏈接的。鏈接池里所有的鏈接都能重復使用,共享的, 即實現了并發,又防止了鏈接次數太多
import timeimport pymysqlimport threadingfrom DBUtils.PooledDB import PooledDB, SharedDBConnection 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='pooldb', charset='utf8')def func(): # 檢測當前正在運行連接數的是否小于大鏈接數,如果不小于則:等待或報raise TooManyConnections異常 # 否則 # 則優先去初始化時創建的鏈接中獲取鏈接 SteadyDBConnection。 # 然后將SteadyDBConnection對象封裝到PooledDedicatedDBConnection中并返回。 # 如果最開始創建的鏈接沒有鏈接,則去創建一個SteadyDBConnection對象,再封裝到PooledDedicatedDBConnection中并返回。 # 一旦關閉鏈接后,連接就返回到連接池讓后續線程繼續使用。 # PooledDedicatedDBConnection conn = POOL.connection() # print(th, '鏈接被拿走了', conn1._con) # print(th, '池子里目前有', pool._idle_cache, '\r\n') cursor = conn.cursor() cursor.execute('select * from tb1') result = cursor.fetchall() conn.close()
到此,關于“怎么創建python數據庫連接池”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注創新互聯-成都網站建設公司網站,小編會繼續努力為大家帶來更多實用的文章!
當前題目:怎么創建python數據庫連接池-創新互聯
網址分享:http://vcdvsql.cn/article22/pgpjc.html
成都網站建設公司_創新互聯,為您提供網頁設計公司、Google、做網站、網站導航、定制網站、自適應網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯