欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 使用 PyMysql、DBUtils 創(chuàng)建連接池提升性能

 更新時間:2019年08月14日 11:16:42   作者:feiquan  
DBUtils 是一套 Python 數(shù)據(jù)庫連接池包,并允許對非線程安全的數(shù)據(jù)庫接口進(jìn)行線程安全包裝。這篇文章主要介紹了Python 使用 PyMysql、DBUtils 創(chuàng)建連接池,提升性能,需要的朋友可以參考下

Python 編程中可以使用 PyMysql 進(jìn)行數(shù)據(jù)庫的連接及諸如查詢/插入/更新等操作,但是每次連接 MySQL 數(shù)據(jù)庫請求時,都是獨(dú)立的去請求訪問,相當(dāng)浪費(fèi)資源,而且訪問數(shù)量達(dá)到一定數(shù)量時,對 mysql 的性能會產(chǎn)生較大的影響。因此,實(shí)際使用中,通常會使用數(shù)據(jù)庫的連接池技術(shù),來訪問數(shù)據(jù)庫達(dá)到資源復(fù)用的目的。

解決方案:DBUtils

DBUtils 是一套 Python 數(shù)據(jù)庫連接池包,并允許對非線程安全的數(shù)據(jù)庫接口進(jìn)行線程安全包裝。DBUtils 來自 Webware for Python 。

原理:


  • 在程序創(chuàng)建連接的時候,可以從一個空閑的連接中獲取,不需要重新初始化連接,提升獲取連接的速度
  • 關(guān)閉連接的時候,把連接放回連接池,而不是真正的關(guān)閉,所以可以減少頻繁地打開和關(guān)閉連接

例子

import pymysql
from DBUtils.PooledDB import PooledDB
pool = PooledDB(pymysql,5,host='ip',user='user',passwd='passwd',db='db',port=3306,setsession=['SET AUTOCOMMIT = 1']) # 5為連接池里的最少連接數(shù),setsession=['SET AUTOCOMMIT = 1']是用來設(shè)置線程池是否打開自動更新的配置,0為False,1為True
conn = pool.connection() #以后每次需要數(shù)據(jù)庫連接就是用connection()函數(shù)獲取連接就好了
cur=conn.cursor()
SQL="select * from table"
count=cur.execute(SQL)
results=cur.fetchall()
cur.close()
conn.close()

PooledDB 的參數(shù):

POOL = PooledDB(
creator=pymysql, # 使用鏈接數(shù)據(jù)庫的模塊
maxconnections=6, # 連接池允許的最大連接數(shù),0和None表示不限制連接數(shù)
mincached=2, # 初始化時,鏈接池中至少創(chuàng)建的空閑的鏈接,0表示不創(chuàng)建
maxcached=5, # 鏈接池中最多閑置的鏈接,0和None不限制
maxshared=1, # 鏈接池中最多共享的鏈接數(shù)量,0和None表示全部共享。PS: 無用,因?yàn)閜ymysql和MySQLdb等模塊的 threadsafety都為1,所有值無論設(shè)置為多少,_maxcached永遠(yuǎn)為0,所以永遠(yuǎn)是所有鏈接都共享。
blocking=True, # 連接池中如果沒有可用連接后,是否阻塞等待。True,等待;False,不等待然后報錯
maxusage=None, # 一個鏈接最多被重復(fù)使用的次數(shù),None表示無限制
setsession=[], # 開始會話前執(zhí)行的命令列表。如:[“set datestyle to …”, “set time zone …”]
ping=0,
# ping MySQL服務(wù)端,檢查是否服務(wù)可用。
# 如: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='',
database=‘ziji',
charset=‘utf8'
)

在 uwsgi 中,每個 http 請求都會分發(fā)給一個進(jìn)程,連接池中配置的連接數(shù)都是一個進(jìn)程為單位的(即上面的最大連接數(shù),都是在一個進(jìn)程中的連接數(shù)),而如果業(yè)務(wù)中,一個 http 請求中需要的 sql 連接數(shù)不是很多的話(其實(shí)大多數(shù)都只需要創(chuàng)建一個連接),配置的連接數(shù)配置都不需要太大。

連接池對性能的提升表現(xiàn)在:

在程序創(chuàng)建連接的時候,可以從一個空閑的連接中獲取,不需要重新初始化連接,提升獲取連接的速度關(guān)閉連接的時候,把連接放回連接池,而不是真正的關(guān)閉,所以可以減少頻繁地打開和關(guān)閉連接

總結(jié)

以上所述是小編給大家介紹的Python 使用 PyMysql、DBUtils 創(chuàng)建連接池提升性能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • Python Unittest根據(jù)不同測試環(huán)境跳過用例的方法

    Python Unittest根據(jù)不同測試環(huán)境跳過用例的方法

    這篇文章主要給大家介紹了關(guān)于Python Unittest如何根據(jù)不同測試環(huán)境跳過用例的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧
    2018-12-12
  • Python接口自動化淺析數(shù)據(jù)驅(qū)動原理

    Python接口自動化淺析數(shù)據(jù)驅(qū)動原理

    這篇文章主要介紹了Python接口自動化淺析數(shù)據(jù)驅(qū)動原理,文中會詳細(xì)描述怎樣使用openpyxl模塊操作excel及結(jié)合ddt來實(shí)現(xiàn)數(shù)據(jù)驅(qū)動,有需要的朋友可以參考下
    2021-08-08
  • python如何在文件中部插入信息

    python如何在文件中部插入信息

    這篇文章主要介紹了python如何在文件中部插入信息問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • python驗(yàn)證碼識別的實(shí)例詳解

    python驗(yàn)證碼識別的實(shí)例詳解

    現(xiàn)在的網(wǎng)站為了防止機(jī)器人提交表單,圖片驗(yàn)證碼是很常見的應(yīng)對手段之一。這里就不詳細(xì)介紹了,相信大家都遇到過?,F(xiàn)在這篇文章就給出用Python識別驗(yàn)證碼的詳細(xì)示例代碼,文中介紹的很詳細(xì),有需要的可以參考借鑒。
    2016-09-09
  • 分布式全文檢索引擎ElasticSearch原理及使用實(shí)例

    分布式全文檢索引擎ElasticSearch原理及使用實(shí)例

    這篇文章主要介紹了分布式全文檢索引擎ElasticSearch原理及使用實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • python中關(guān)于xmltodict的使用

    python中關(guān)于xmltodict的使用

    這篇文章主要介紹了python中關(guān)于xmltodict的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • python使用socket向客戶端發(fā)送數(shù)據(jù)的方法

    python使用socket向客戶端發(fā)送數(shù)據(jù)的方法

    這篇文章主要介紹了python使用socket向客戶端發(fā)送數(shù)據(jù)的方法,涉及Python使用socket實(shí)現(xiàn)數(shù)據(jù)通信的技巧,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-04-04
  • python使用MySQLdb訪問mysql數(shù)據(jù)庫的方法

    python使用MySQLdb訪問mysql數(shù)據(jù)庫的方法

    這篇文章主要介紹了python使用MySQLdb訪問mysql數(shù)據(jù)庫的方法,實(shí)例分析了Python使用MySQLdb模塊操作mysql數(shù)據(jù)庫的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • python基礎(chǔ)之引用和匿名函數(shù)

    python基礎(chǔ)之引用和匿名函數(shù)

    這篇文章主要介紹了python引用和匿名函數(shù),實(shí)例分析了Python中返回一個返回值與多個返回值的方法,需要的朋友可以參考下
    2021-10-10
  • Python爬取國外天氣預(yù)報網(wǎng)站的方法

    Python爬取國外天氣預(yù)報網(wǎng)站的方法

    這篇文章主要介紹了Python爬取國外天氣預(yù)報網(wǎng)站的方法,可實(shí)現(xiàn)抓取國外天氣預(yù)報信息的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07

最新評論