[英]How to create a connection (or session) pool in python multiprocessing code using cx_Oracle to connect to a Oracle database?
我有一個非常冗長的multiprocessing python code
,其中涉及在運行期間多次與Oracle database
交互。 該代碼應該是一個獨立的應用程序,它將 24*7 運行並從數據庫中獲取數據,使用多處理執行它,將結果寫回數據庫,然后再次輪詢數據庫以獲取新數據並不斷重復此循環。 如何創建connection pool (or session pool
,不知道 python 和編碼中的 2、new 的區別)來提高代碼的性能? 需要使用cx_oracle
連接到 Oracle db。 任何幫助將不勝感激。 提前謝謝了!!
如何創建連接池(或session池,不知道2、新在python和編碼之間的區別)來提高代碼的性能?
cx_Oracle connection pool
的每個連接對應一個Oracle session
。
當應用程序頻繁地連接和斷開數據庫時,連接池將提高性能。 cx_Oracle
連接池允許應用程序創建和維護與數據庫的連接池。 使用cx_Oracle.SessionPool()
創建池,然后可以調用SessionPool.acquire()
以從池中獲取連接。 初始池大小和最大池大小在創建池時提供。 當池需要增長時,會自動創建新連接。 當連接不再使用時,池可以縮小到最小大小。 當不再需要從池中獲取的連接時,應使用SessionPool.release()
或Connection.close()
將它們釋放回池。 否則,當所有引用連接 go 的變量都從 scope 中釋放出來時,它們將自動釋放回池中。 session 池可以使用SessionPool.close()
完全關閉。
下面的示例顯示了如何使用連接池連接到 Oracle 數據庫:
# Create the session pool
pool = cx_Oracle.SessionPool("hr", userpwd,
"dbhost.example.com/orclpdb1", min=2, max=5, increment=1, encoding="UTF-8")
# Acquire a connection from the pool
connection = pool.acquire()
# Use the pooled connection
cursor = connection.cursor()
for result in cursor.execute("select * from mytab"):
print(result)
# Release the connection to the pool
pool.release(connection)
# Close the pool
pool.close()
閱讀有關連接池的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.