1. 程式人生 > >sqlalchemy使用及相關查詢函式的呼叫

sqlalchemy使用及相關查詢函式的呼叫

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()釋放連線,將資料庫連線放回連線池,而不是真的關閉連線

 

原文地址:http://www.cnblogs.com/pengyusong/p/5790867.html