Python編程:DBUtils管理數(shù)據(jù)庫連接池

      網(wǎng)友投稿 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

      Python編程:DBUtils管理數(shù)據(jù)庫連接池

      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)容。

      上一篇:Excel2010中多窗口顯示的操作技巧(excel2008多窗口怎么顯示出來)
      下一篇:Excel表格中匯總多個數(shù)據(jù)表中的數(shù)據(jù)實現(xiàn)數(shù)據(jù)的合并計算(一個表格多個數(shù)據(jù)合并計算)
      相關文章
      亚洲一区二区三区成人网站| 亚洲人成77777在线播放网站| 亚洲国产天堂久久综合| 亚洲午夜久久久精品电影院| 久久精品国产亚洲AV麻豆不卡| 亚洲精品成人久久久| 亚洲国产成人AV网站| 亚洲综合欧美色五月俺也去| 亚洲Av无码一区二区二三区| 亚洲一级毛片免费看| 亚洲欧洲另类春色校园网站| 亚洲人成网站日本片| 亚洲av产在线精品亚洲第一站| 亚洲av一本岛在线播放| 亚洲免费观看网站| 亚洲中文字幕精品久久| 亚洲精品精华液一区二区| 亚洲日本一线产区和二线产区对比| 中文字幕乱码亚洲无线三区| 亚洲女女女同性video| 亚洲色大成网站www永久男同| 亚洲精品国产第一综合99久久| 亚洲精品国产首次亮相| 亚洲AV色欲色欲WWW| 亚洲福利精品电影在线观看| 国产精品亚洲w码日韩中文| 亚洲精品乱码久久久久久久久久久久| 亚洲码国产精品高潮在线| 亚洲成AV人片在| 久久久久亚洲AV无码网站| 亚洲第一香蕉视频| 亚洲精品高清国产麻豆专区| 亚洲国产精品日韩在线观看| 亚洲成人黄色网址| 亚洲中文字幕一二三四区| 亚洲av无码专区在线电影| 亚洲精品国产av成拍色拍| 精品久久久久亚洲| 亚洲中文久久精品无码ww16| 亚洲AV无码精品色午夜果冻不卡 | 亚洲AV无码成人精品区蜜桃|