【筆記】python的sqlalchemy資料庫連接池原理的說明

來源:互聯網
上載者:User

標籤:

sqlalchemy資料庫連接池的使用方式是延遲初始化,就是說一開始你調用create_engine(...)後建立的那個資料庫池是空的,你後面通過session.connection()或者engine.connect()才開始建立串連,

每當你建立一個串連,你調用engine.pool.status()就可以看到資料庫連接池處於什麼狀態,下面說明以下status()的輸出說明:

‘Pool size: 16  Connections in pool: 1 Current Overflow: 1 Current Checked out connections: 16‘

Pool size 是你指定的資料庫池的大小

Connections in pool 是在池子中可以使用的串連有多少個

Current Overflow 這個參數說明當前存在的串連數超過Pool size多少個,當overflow (初始為Pool size的負值) 超過max_overflow(預設為10)之後就不能建立新的串連了,只能等待,換句話說:你的資料庫連接池的大小雖然只有Pool size個,

          但是你可以建立的串連數則是Pool size+max_overflow, 沒建立一個串連overflow 都會加1,到等於max_overflow時候就不能在建立串連了

Current Checked out connections 是被佔用的串連數

 

註:這些都是看源碼以及在python終端查看engine/session/engine.pool等的各種函數調用和屬性擷取到的,重要的查看地方: __dict__, __class__;在終端建立串連時注意用變數持有串連,不然你將會看到資料庫連接池的狀態不變

  engine.pool.checkedin() 顯示閑著的串連數個數,大小從0 ~ Pool size

  engine.pool.checkedout() 顯示被佔用的串連數個數,大小從0 ~ Pool size+max_overflow

 

調用session.connection()或者engine.connect(),從資料庫池中拿串連,如果有閑著的串連就直接返回,沒有閑著的就看下是否能建立串連(即資料庫池滿了),如果能就建立新串連,如果不能,則等待串連,逾時時間可配置,請查看文檔

調用Connection.close()釋放串連,將資料庫連接放回串連池,而不是真的關閉串連

 

【筆記】python的sqlalchemy資料庫連接池原理的說明

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.