標籤: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 資料庫連接池