python 基礎 9.5 資料庫連接池

來源:互聯網
上載者:User

標籤:root   es2017   大於   資料庫連接池   .com   cep   pypi   目的   pass   

 一. 資料庫連接池   python 編程中可以使用MySQLdb 進行資料庫的串連及諸如查詢,插入,更新等操作,但是每次串連mysql 資料庫請求時,都是獨立的去請求訪問,相當浪費資源,而且訪問數量達到一定書力量時,對mysql的效能會產生較大的影響。因此,實際使用中,通常會使用資料庫的串連池技術,來訪問資料庫達到資源複用的目的。  python 的資料庫連接池包  DBUtils:DBUtils 是一套python 資料庫連接池包,並允許對非安全執行緒的資料庫介面進行安全執行緒封裝。DBUtils 來自 Webware for  pthon DBUtils 提供兩種外部介面:* PersistentDB:提供線程專用的資料庫連接,並自動管理串連。*PooledDB: 提供線程間可共用資料庫串連,並自動管理串連。:https://pypi.python.org/pypi/DBUtils/  下載解壓後,使用python setup.py install 命令進行安裝或者使用:pip install DBUtils  #/usr/bin/python#-*- coding:utf-8 -*-#@Time   :2017/11/22 15:43#@Auther :liuzhenchuan#@File   :資料庫連接池.py import MySQLdbfrom DBUtils.PooledDB import PooledDB db_config= {    ‘host‘:‘192.168.10.199‘,    ‘port‘:3306,    ‘user‘:‘root‘,    ‘passwd‘:‘123123‘,    ‘db‘:‘python‘,    ‘charset‘:‘utf8‘}pool = PooledDB(creator=MySQLdb,mincached=5,blocking=True,**db_config) if __name__ == ‘__main__‘:    cnx = pool.connection()    cus = cnx.cursor()    SQL = ‘select *from test;‘    try:        cus.execute(SQL)        result = cus.fetchall()        print result        cus.close()        cnx.commit    except Exception as e:        raise e    finally:        cnx.close()  >>>((100L,), (99L,), (95L,), (95L,), (98L,), (97L,), (96L,), (95L,), (100L,), (101L,), (102L,), (103L,), (104L,), (105L,), (106L,), (107L,), (108L,), (109L,), (110L,), (111L,), (112L,), (113L,), (114L,), (115L,), (116L,), (117L,), (118L,), (119L,), (120L,), (121L,), (122L,), (123L,), (124L,), (125L,), (126L,), (127L,), (128L,), (129L,))   參數說明:pool = PooledDB(MySQLdb,5, **db_config)  #5 為串連池裡的最少串連數 cnx = pool.connection()   # 以後每次需要資料庫連接就是用connection() 函數擷取串連就好了cus = cnx.cursor()cus = cnx.cursor()SQL = ‘select *from test;‘try:  cus.execute(SQL)   result = cus.fetchall()   print result   cus.close()   cnx.commit PooledDB 的參數:1.mincached,最少的空閑串連數,如果空閑串連數小於這個數,pool 會建立一個新的串連2.maxcached,最大的空閑串連數,如果空閑串連數大於這個數,pool 會關閉空閑串連3.maxconnections,最大的串連數。4.blocking,當連結數達到最大的連結數時,在請求串連的時候,如果這個值是True,請求串連的程式會一直等待,直到當前串連數小於最大串連數,如果這個值是Flase,會報錯5.maxshared 當串連數達到這個數,新請求的連結會分享已經分配出去的連結。 在uwsgi 中,每個httpd請求都會分發給一個進程,串連池中配置的連結數都是一個進程為單位的(即上面的最大串連數,都是在一個進程中的連結數),而如果業務中,一個httpd請求中需要的sql串連數不是很多的話(其實大多數都只需要建立一個串連),配置的連結數配置都不需要太大。 串連池對效能的提升變現在:1.在程式建立串連的時候,可以從一個閒置連結中擷取,不需要重新初始化串連,提升擷取連結的速度2.關閉串連的時候,把連結放回串連池,而不是真的關閉,所以可以減少頻繁的開啟和關閉串連                                                                                     

python 基礎 9.5 資料庫連接池

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.